如图,将输入按分数大小排序,但当输入三位数参与排序时,第三位数不起作用,比如150分,排序时是按照15来排序
data = input() # 课程名 考分
d={}
while data:
t=data.split()
d[t[0]]=t[1]
data = input()
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
s1,g1=ls[0]
s2,g2=ls[len(ls)-1]
a=0
for i in d.values():
a=a+int(i)
a=a/len(ls)
print("最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}".format(s1,g1,s2,g2,a))
我猜测是字符的比较读取问题,和对应码表有关系,但不会改
把列表第二个数字字符串int()转成数值再排序比较
ls.sort(key=lambda x:int(x[1]),reverse=True)
否则第二个数字是以字符串排序比较的, 字符串比较"150" 小于 "16"
data = input() # 课程名 考分
d={}
while data:
t=data.split()
d[t[0]]=int(t[1]) #或者在这里把数字字符串用int()转成数值也可以
data = input()
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
s1,g1=ls[0]
s2,g2=ls[len(ls)-1]
a=0
for i in d.values():
a=a+int(i)
a=a/len(ls)
print("最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}".format(s1,g1,s2,g2,a))
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!