我正在制作简单的老女佣游戏。这是我职业选手的课程:
class OldMaidHand(Hand):
def removeMatches(self):
count=0;
originalCards=self.cards[:];
for card in originalCards:
match=Card(3-card.suit,card.rank);
if match in self.cards:
self.cards.remove(card);
self.cards.remove(match);
print "Hand %s: %s matches %s "%(self.name,card,match);
count=count+1;
return count;`
但它显示以下错误:
TypeError
:比较没有返回int。
以下是__cmp__()
类中的Card
方法。
def __cmp__(self,other):
if self.suit>other.suit:
return 1
if self.suit<other.suit:
return -1
if self.rank>other.rank:
return 1
if self.rank<other.rank:
return -1
答案 0 :(得分:1)
如果未定义丰富的比较(见上文),则通过比较操作调用。如果self&lt;返回负整数其他,如果自我为零==其他,如果自我为正整数>其他
换句话说,正如你的错误所说,它应该在任何情况下返回一个整数。
如果你的if条件都没有获得,你的__cmp__
将“脱离函数的末尾”,返回None
,这是任何没有明确返回其他东西的Python函数的默认值。这是您的错误的来源(因为None
不是整数)。
我没有仔细检查你的代码,但似乎你忽略了秩和西装都相等的情况。也许作为一个失败保障,你应该在函数结束时简单地return 0
,除非你发现你的条件没有得到满足但卡不相等的情况。