【发布时间】:2016-10-22 03:01:06
【问题描述】:
我正在制作简单的老女仆游戏。这是我的牌手类:
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:comparison 没有返回 int。
这是我在Card 类中的__cmp__() 方法。
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
【问题讨论】:
-
请修正您的课程格式。
-
如果相等怎么办?
-
如果你的
if子句都不为真,__cmp__将返回None,这是不行的。 -
与
==条件一起,您可以将类似的条件语句与or组合起来 -
@Two-BitAlchemist 这应该是一个答案,而不是评论。
标签: python python-2.7 typeerror