-3

我有一个函数应该在生命 <= 0 时返回 false:

def isAlive(self):
    if self.lives <= 0:
       return False
    return True

但它总是返回 True。

4

1 回答 1

2

我敢打赌,实际的问题lives不是数字,而是其他东西,例如 string'0'或 list [0]

在 Python 2.x 中,当您像这样比较不可比较类型的值时,它只是比较类型。* 因此,every strorlist大于 every int。因此, no str​​or listis ever <= any int。从交互式解释器中可以看到:

>>> '2' <= 2
False
>>> 'abcdefg' <= 2
False
>>> [2] <= 2
False

    >>> [] <= 2 错误


要验证这是否是问题所在,并开始调试它,请尝试print两者self.livestype(self.lives)看看你得到了什么。如果它不是数字,则使用 type int,这就是您必须解决的问题。

解决这个问题的方法是弄清楚你是如何在self.lives前面的代码中得到错误类型的值的,无论你在那里做错了什么,都不要这样做。


* 不能完全保证它们是按类型排序的,并且绝对不能保证类型本身的排序。但这并不重要,因为即使您确实知道顺序,也很难想象您会想要依靠它来获得任何有用的东西。

于 2013-05-29T00:33:19.820 回答