2013-05-28 59 views
-3

我有一個設想,當生命受到< = 0返回false的函數:如何在類中返回False函數?

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

但它總是返回true。

+5

然後'self.lives'大於0.你可以直接返回倒數表達式:'return self.lives> 0'。 –

回答

2

我敢打賭,實際的問題是lives不是一個數字,而是其他的東西,比如字符串'0'或者列表[0]

在Python 2.x中,比較類似的無比類型的值時,它只是比較類型。*因此,每個strlist都大於每個int。因此,沒有strlist永遠是< =任何int。你可以從交互式解釋見:

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

>>> [] < = 2 假


要驗證這就是問題所在,並開始調試它,嘗試print荷蘭國際集團出self.livestype(self.lives),看看你得到什麼。如果它不是一個數字,請輸入int,這就是你必須解決的問題。

這個問題的解決方法是弄清楚你在代碼中早些時候如何在self.lives中得到錯誤的值類型,並且無論你在那裏做錯了什麼,都不要這樣做。


*它不能保證它們是按類型排序的,並且類型本身的排序絕對不能保證。但無論如何,這並不重要,因爲即使您確實知道排序,也很難想象您會想要將它用於任何有用的事情。