这是我写的一些Python代码,用于生成随机的扑克手牌,只是为了好玩/为了挑战,但是当我试图运行它时,我在"if card in hand"这行中得到了上面的错误。发生了什么,为什么会发生这种情况,特别是这一行没有迭代?
import random
def pokerHand():
hand = ["This is your hand:"]
x = 0
while x < 5:
cardNum = random.randrange(13) + 1
if cardNum == 1:
cardNum = "Ace of "
elif cardNum == 11:
cardNum = "Jack of "
elif cardNum == 13:
cardNum = "King of "
elif cardNum == 12:
cardNum = "Queen of "
else:
cardNum = str(cardNum) + " of "
cardSuit = random.randrange(4)
if cardSuit == 0:
cardSuit = "Clubs"
elif cardSuit == 1:
cardSuit = "Diamonds"
elif cardSuit == 3:
cardSuit = "Hearts"
elif cardSuit == 2:
cardSuit = "Spades"
card = cardNum + cardSuit
if card in hand: #<the line of error
pass
else:
hand = hand.append(card)
x = x + 1
for xx in hand:
print xx
hand = hand.append(card)
append
不返回任何东西。改为:
hand.append(card)
列表的append()
方法不返回列表,它就地修改列表。因此,在添加第一张卡片(带有hand = hand.append(card)
)之后,hand被设置为append()
的返回值,即None
(没有显式return
的方法的返回值)。应该改成hand.append(card)
list。append不返回附加值的列表,而是将值就地附加到列表并返回None。这样做:
else:
hand.append(card)
...