Python循环调用数值区间判定方法输出结果与预期不符问题
问题原因分析
- 核心诱因是从文件读取的所有内容默认是字符串类型,传入
suitable函数时执行的是字符串字典序比较,而非预期的数值大小比较。
你在循环中传入的实际是
"3"、"10"、"3"三个字符串,字符串比较时会逐位比对字符的Unicode编码:第一个字符"3"的编码远大于"1",所以"3" <= "10"的判定结果直接为False,最终返回No。
你单独调用函数时传入的是整数类型的3、10、3,执行的是数值比较,结果符合预期。
相关Python特性说明
该问题和Python的类型特性直接相关:Python属于强类型动态语言,不会自动将数字字符串隐式转换为整数进行运算/比较,且允许字符串之间按字典序直接比较,该特性是触发本次问题的底层逻辑。
修复方案
只需要在读取值后转为整数类型即可,修改循环内的取值代码:
aa = int(lines[a]) bb = int(lines[b]) cc = int(lines[c])
额外优化建议:输出文件也建议使用with上下文管理器管理,避免程序异常时文件资源未正常关闭:
with open("output.txt", "w") as file: for i in range(cases): # 原有循环逻辑
内容的提问来源于stack exchange,提问作者PixelAim
相关产品推荐
相关产品推荐

