我有以下代码:
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)时,它工作正常。
我做错了什么?感谢
答案 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()
欢呼声,