比较python中的元组

时间:2011-12-20 15:22:50

标签: python comparison tuples pacman

我有以下代码:

while current is not problem.getStartState():

        print "Current: ", current, "Start: ", problem.getStartState()

现在由于某种原因,比较效果不佳,您可以在以下输出中看到:

Current:  (3, 5, 0, 0, 0, 0) Start:  (4, 5, 0, 0, 0, 0)
Current:  (4, 5, 0, 0, 0, 0) Start:  (4, 5, 0, 0, 0, 0)

你可以看到,即使current与getStartState()相同,它也会输入while。此外 - 当它曾经是一个2字段元组(x,y)时,它工作正常。

我做错了什么?感谢

3 个答案:

答案 0 :(得分:5)

is测试身份,而不是平等。你想要current != problem.getStartState()

有一个成语is (not) None可以使用,因为None保证是一个单身人士。除非你真的是这样,否则不要将它用于其他类型!

答案 1 :(得分:2)

while current != problem.getStartState():

    print "Current: ", current, "Start: ", problem.getStartState()

is是身份(相同对象)比较器。在您的情况下,您需要一个相等(或不等式)(具有相同值的对象)运算符。

答案 2 :(得分:-1)

不是在这种情况下使用的正确检查。 要比较2个元组,只需使用!=或==

例如,问题可以解决如下:

while current != problem.getStartState():   
        print "Current: ", current, "Start: ", problem.getStartState()

欢呼声,