|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求助!我的学生信息文件是这样的。filename=‘student.txt’
{'id': 1001, 'name': 'zz', 'chinese': 10, 'math': 10, 'english': 10}
{'id': 1002, 'name': 'xx', 'chinese': 20, 'math': 20, 'english': 20}
{'id': 1003, 'name': 'www', 'chinese': 1, 'math': 2, 'english': 50}
{'id': 100, 'name': '1', 'chinese': 14, 'math': 14, 'english': 45}
def sort():#定义的排序函数
if os.path.exists(filename): #文件如果存在
with open(filename,'r',encoding='utf-8') as rfile: #只读打开
stu_list=rfile.readlines() #读取到stu_list的列表中
stu_new = [] #定义一个新的列表
for i in stu_list: #遍历列表,将每一项转化为字典
d=dict(eval(i))
stu_new.append(d) #成功将字典添加到列表的每一项
else:
print('目前没有学生信息可供排序!')
return
while True:
try:
choose=input('请选择排序方式:升序(1)/降序(2)')#sort 默认升序
if choose=='1':
flag=False
elif choose=='2':
flag=True
else:
print('排序方式输入有误,请重新输入!')
continue
except:
print('输入为空,请重新选择排序方式!')
continue
num=input('按语文成绩排序(1),按数学成绩排序(2),按英语成绩排序(3),按总分排序(4)')
if num == '1':
stu_new.sort(key=lambda x:x['chinese'],reverse=choose)#此处出错。
elif num == '2':
stu_new.sort(key=lambda x:x['math'],reverse=choose)#此处出错。
elif num == '3':
stu_new.sort(key=lambda x:x['english'],reverse=choose)#此处出错。
elif num == '4':
stu_new.sort(key=lambda x:x['chinese']+x['math']+x['english'],reverse=choose)#此处出错。
else:
print('排序关键字输入有误,请重新选择!')
continue
show_student(stu_new)#将排序完的列表展示
错误信息提示:stu_new.sort(key=lambda x:x['chinese']+x['math']+x['english'],reverse=choose)#此处出错。
TypeError: an integer is required (got type str)
在输入完按语文或者数学排序后,程序直接报错。不能运行。
请大家帮忙看看,谢谢
本帖最后由 suchocolate 于 2020-12-3 12:16 编辑
定义的函数名最好改成别的,它和list的方法sort重名了,虽然不干扰,但不推荐定义的函数和用到的方法重名,容易引起歧义。 stu_new.sort(key=lambda x:x['chinese']+x['math']+x['english'],reverse=flag)
|
|