You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python学生记录管理程序中实现字母排序?

如何用sorted()实现学生记录的字母排序显示

要实现按字母顺序排序并支持升降序选择,你需要在view_records()函数中做以下修改:

1. 添加排序方向选择逻辑

在读取文件前,先让用户选择升序或降序,动态控制排序的方向参数。

2. 读取记录并执行排序

由于csv.reader是一次性迭代器,先把所有行读取到列表中,再用sorted()按指定字段排序。

修改后的view_records函数代码

import csv
student_info = ['Student ID', 'First name', 'last name', 'age', 'address', 'phone number']
database = 'file_records.txt'


def view_records():
    global student_info
    global database

    print("--- Student Records ---")
    # 获取用户排序方向选择
    while True:
        sort_choice = input("请选择排序方向:1. 升序(A-Z)  2. 降序(Z-A):").strip()
        if sort_choice in ['1', '2']:
            reverse = sort_choice == '2'
            break
        print("输入无效,请选择1或2")

    with open(database, "r", encoding="utf-8") as f:
        reader = csv.reader(f)
        # 将所有记录转为列表,方便排序操作
        records = list(reader)
        
        # 打印表头
        for x in student_info:
            print(x, end='\t |')
        print("\n-----------------------------------------------------------------")

        # 按姓氏(last name)字母排序,不区分大小写
        sorted_records = sorted(records, key=lambda row: row[2].lower(), reverse=reverse)
        
        # 打印排序后的记录
        for row in sorted_records:
            for item in row:
                print(item, end="\t |")
            print("\n")

    input("Press any key to continue")

关键代码说明

  • sorted(records, key=lambda row: row[2].lower(), reverse=reverse):
    • key=lambda row: row[2].lower():指定按第3列(last name)排序,.lower()确保大小写字母统一排序(比如"Smith"和"smith"不会因大小写打乱顺序)。
    • reverse=reverse:根据用户选择切换升/降序,True为降序,False为升序。
  • list(reader):将csv读取器转为列表,避免迭代器只能遍历一次的限制,方便后续排序和打印。

如果需要按名字(First name)排序,只需把row[2]改成row[1]即可,对应student_info中的索引位置。

内容的提问来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:40:18