Python读取4个用户输入数字的代码为何未正常输出最大整数?
代码错误原因分析
- Python列表的
sort()方法默认执行升序排序,排序后列表元素从小到大排列,你代码里排序后的列表索引[0]是最小值,索引[3]才是最大值。 - 你写的if-elif链式判断逻辑完全错误。链式判断只要前一个条件成立就会终止后续判断,且判断逻辑和取最大值的目标完全不匹配,同时你判断的是排序后的列表元素,输出的却是原始输入顺序的
num1/num2/num3/num4变量,排序后列表元素的位置已经和原始输入变量没有对应关系,必然会输出错误结果。 - 额外注意:不要用
list作为变量名,会覆盖Python内置的list类型,属于不良编码习惯。
修复方案
不需要写复杂的if判断,直接用内置方法就能拿到最大值,两种正确写法如下:
写法1:用max()函数直接取最大值(推荐)
num1 = int(input("Types your numbers: ")) num2 = int(input("Types your numbers: ")) num3 = int(input("Types your numbers: ")) num4 = int(input("Types your numbers: ")) nums = [num1, num2, num3, num4] print(max(nums))
写法2:排序后取列表最后一位元素
num1 = int(input("Types your numbers: ")) num2 = int(input("Types your numbers: ")) num3 = int(input("Types your numbers: ")) num4 = int(input("Types your numbers: ")) nums = [num1, num2, num3, num4] nums.sort() # 升序排序后最后一位是最大值,索引-1代表取列表最后一个元素 print(nums[-1])
内容的提问来源于stack exchange,提问作者Deepanshu
相关产品推荐
相关产品推荐

