马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jcpython2 于 2022-10-16 01:01 编辑
我的代码是对比输入数据['人名',分数],相同分数就对比人名,然后排序输出,结果1-99都能正常从大到小输出,错处是100被认为是最小放到了最后
然后我开始排查(代码11行-13行)发现自定义函数返回的值是str,变成了 str100 对比 str99,所以100分变成了排最后,我尝试把自定义函数的q[0]改为int(q[0])但报错
def p(q):
return q[1],q[0]
n = int(input())
list = []
for i in range(n):
x = input().split()
list.append(x)
list.sort(key=p,reverse=True)
print(list[13][1],'----对比----',list[0][1])
print(list[13][1] > list[0][1])
print(type(list[13][1]),type(list[0][1]))
输入内容:14
Zed 71
Ada 92
Caty 62
Chrome 73
Peter 71
Melody 38
Tina 37
Gabby 99
Lucy 100
Kim 56
Aomica 71
Lee 56
Wong 87
July 17
不正确的输出结果:100 ----对比---- 99
False
<class 'str'> <class 'str'>
[['Gabby', '99'], ['Ada', '92'], ['Wong', '87'], ['Chrome', '73'], ['Zed', '71'], ['Peter', '71'], ['Aomica', '71'], ['Caty', '62'], ['Lee', '56'], ['Kim', '56'], ['Melody', '38'], ['Tina', '37'], ['July', '17'], ['Lucy', '100']]
['Lucy', '100']在最后了
让我先笑会,你的q[0]是人名,当然不能int(q[0])了,所以你只需要把函数里的q[1]改为int(q[1])就行。
|