Python技术问题:检查两个数值是否在指定区间时代码异常
问题分析与修复方案
嘿,我瞅了下你的代码,核心问题出在你把数值转换成字符串来做大小比较了,这会导致不符合预期的判断结果!
字符串的比较逻辑和数值完全不一样:它是按每个字符的ASCII值依次对比,而不是按实际的数值大小判断。举个例子,如果遇到"100.01"和"99.01",字符串比较会认为"100.01"更小(因为第一个字符'1'的ASCII值比'9'小),但实际数值上100.01明显更大。
另外,你的条件判断逻辑没问题,但要确保所有参与比较的都是数值类型才行。
修正后的代码
for i in saptamani: # 直接使用数值类型,不要转成字符串 number1 = 23.04 number2 = 27.04 # 先把i里的区间值转成数值类型(如果原本是字符串格式的话) lower_bound = float(i[0]) upper_bound = float(i[1]) # 检查两个数值是否都落在[lower_bound, upper_bound]区间内 if (lower_bound <= number1 <= upper_bound) and (lower_bound <= number2 <= upper_bound): print("4") else: print("nu este")
关键修改说明
- 移除了
str()转换,直接用原生浮点数定义number1和number2 - 如果你从
i中取出的i[0]和i[1]原本是字符串格式(比如从文本、输入中获取),必须用float()转换成数值类型再比较 - 保留了直观的区间判断逻辑,让代码可读性更强
这样修改后,代码就能正确判断两个数值是否都处于指定区间内了。
内容的提问来源于stack exchange,提问作者Laurentiu Ionut
相关产品推荐
相关产品推荐

