"TypeError: argument of type 'NoneType' is not iterable" ?



这是我写的一些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) ...

相关内容

最新更新