我有一个函数,当生命是< = 0:
时,它应该返回falsedef isAlive(self):
if self.lives <= 0:
return False
return True
但它总是返回True。
答案 0 :(得分:2)
我愿意打赌,实际问题是lives
不是数字,而是其他内容,例如字符串'0'
或列表[0]
。< / p>
在Python 2.x中,当您比较像这样的无法比较的类型的值时,它只是比较类型。*因此,每个str
或list
都大于每个int
。因此,str
或list
始终不是&lt; =任何int
。正如您从交互式解释器中看到的那样:
>>> '2' <= 2
False
>>> 'abcdefg' <= 2
False
>>> [2] <= 2
False
&gt;&gt;&gt; []&lt; = 2 假
要验证这是问题,并开始调试,请尝试print
同时self.lives
和type(self.lives)
,看看你得到了什么。如果它不是数字int
,那就是你需要解决的问题。
解决这个问题的方法是弄清楚你在代码前面的self.lives
中是如何得到错误类型的值的,不管你在那里做错了什么,都不要这样做。
*不能保证它们按类型排序,并且类型本身的排序肯定不能保证。但无论如何都没关系,因为即使你确实知道了这个顺序,也很难想象你想要依赖它来做任何有用的事情。