输入5,-5,-7时Python求最小值代码输出-5而非-7是为什么
代码问题根源
你代码里的x列表存储的是input分割后得到的字符串类型元素,实际执行的是字符串的字典序比较规则,而非数值大小比较:
字符串'-5'和'-7'对比时,首字符都是'-',会继续对比第二个字符,字符'5'的ASCII码小于'7',所以程序会判定'-5' < '-7'为真,最终得到错误结果。
修复步骤
- 分割输入内容后,将每个元素转换为整数类型(如果需要支持小数可转换为float类型)
- 不要使用
min作为变量名,会覆盖Python内置的min()求最小值函数,引发后续潜在问题
修复后的代码如下:
# 分割后逐个转int x = list(map(int, input('Please enter a list of different numbers separated by \',\':').split(','))) min_val = x[0] for i in range(0, len(x)): if x[i] < min_val: min_val = x[i] print('The minimun number is ', min_val)
修复后输入5,-5,-7即可得到预期输出-7。
内容的提问来源于stack exchange,提问作者Anson
相关产品推荐
相关产品推荐

