Python整数比较中出现很尴尬的(看似简单)错误

0 投票
3 回答
2493 浏览
提问于 2025-04-16 01:31

我有一段代码,它的运行结果跟我预期的完全不一样……

current_frame = 15 # just for showcasing purposes
g_ch = 7

if (current_frame != int(row[0])) and (int(row[1]) != g_ch):
                current_frame = int(row[0])
                print "curious================================="
                print current_frame
                print row
                print current_frame, " != ", int(row[0]), ", ", current_frame != int(row[0])
                print "========================================"

对于任何特定的情况,它打印出的结果是:

curious================================= 

15 

['15', '1', 'more data'] 15 != 15 , False

========================================

显然,这里根本不应该进入这个if语句,因为它显示的相等性是假的。为什么会这样呢?

补充:我也试过用 != 代替 'is not',结果还是一样。

3 个回答

0

你在条件判断的里面写了 current_frame = int(row[0]),这会改变布尔表达式的值。

1

简单来说,你需要使用 ==!=,而不是 is。因为 is 是用来比较对象的身份的,而不是比较它们是否相等。

6

值的比较是用 != 这个符号来做的,而不是用 is not,后者是用来比较对象是否是同一个东西。

除此之外,我觉得可能是缩进的问题。

撰写回答