我有一个函数应该在生命 <= 0 时返回 false:
def isAlive(self):
if self.lives <= 0:
return False
return True
但它总是返回 True。
我有一个函数应该在生命 <= 0 时返回 false:
def isAlive(self):
if self.lives <= 0:
return False
return True
但它总是返回 True。
我敢打赌,实际的问题lives
不是数字,而是其他东西,例如 string'0'
或 list [0]
。
在 Python 2.x 中,当您像这样比较不可比较类型的值时,它只是比较类型。* 因此,every str
orlist
大于 every int
。因此, no str
or list
is ever <= any int
。从交互式解释器中可以看到:
>>> '2' <= 2
False
>>> 'abcdefg' <= 2
False
>>> [2] <= 2
False
>>> [] <= 2 错误
要验证这是否是问题所在,并开始调试它,请尝试print
两者self.lives
并type(self.lives)
看看你得到了什么。如果它不是数字,则使用 type int
,这就是您必须解决的问题。
解决这个问题的方法是弄清楚你是如何在self.lives
前面的代码中得到错误类型的值的,无论你在那里做错了什么,都不要这样做。
* 不能完全保证它们是按类型排序的,并且绝对不能保证类型本身的排序。但这并不重要,因为即使您确实知道顺序,也很难想象您会想要依靠它来获得任何有用的东西。