jcpython2 发表于 2022-10-16 00:58:09

自定义函数返回str,无法返回int

本帖最后由 jcpython2 于 2022-10-16 01:01 编辑

我的代码是对比输入数据['人名',分数],相同分数就对比人名,然后排序输出,结果1-99都能正常从大到小输出,错处是100被认为是最小放到了最后

然后我开始排查(代码11行-13行)发现自定义函数返回的值是str,变成了 str100 对比 str99,所以100分变成了排最后,我尝试把自定义函数的q改为int(q)但报错

def p(q):
    return q,q

n = int(input())
list = []
for i in range(n):
    x = input().split()
    list.append(x)
list.sort(key=p,reverse=True)

print(list,'----对比----',list)
print(list > list)
print(type(list),type(list))


输入内容:
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']在最后了

lassiter 发表于 2022-10-16 01:25:42

让我先笑会,你的q是人名,当然不能int(q)了,所以你只需要把函数里的q改为int(q)就行。

jcpython2 发表于 2022-10-16 08:50:12

lassiter 发表于 2022-10-16 01:25
让我先笑会,你的q是人名,当然不能int(q)了,所以你只需要把函数里的q改为int(q)就行。

我晕死我自己明明需要成绩优先排序,函数里面写了在前面,竟然格式化了 我也是笑了哈哈哈

我就奇怪,因为我网上搜的也有return int(x)这个用法
页: [1]
查看完整版本: 自定义函数返回str,无法返回int