Python用户输入值排序:输入6个数字取最小值代码排序异常如何解决
问题原因
input()函数默认返回字符串类型,当前代码直接将字符串存入列表后排序,采用的是ASCII码逐位比较的字符串排序规则,而非实际数值大小排序,因此会出现排序结果不符合预期的问题,例如输入10和2时,字符串排序会判定"10"小于"2"。
修复方案
将每次输入的内容转换为数值类型即可,若仅需要支持整数输入用int()转换,需要支持小数输入用float()转换即可。
修复后示例代码(整数输入版)
x = [] x.append(int(input())) x.append(int(input())) x.append(int(input())) x.append(int(input())) x.append(int(input())) x.append(int(input())) x.sort() smallest = x[0] print(x) print(smallest)
更简洁的优化写法
不需要手动排序,直接调用内置min()函数即可直接获取列表最小值,代码更精简,执行效率也更高:
# 支持整数输入 x = [int(input()) for _ in range(6)] print(min(x))
如果需要支持小数,把代码中的int替换为float即可。
内容的提问来源于stack exchange,提问作者Rave Hood
相关产品推荐
相关产品推荐

