【问题标题】:"TypeError: argument of type 'NoneType' is not iterable"?“TypeError:'NoneType' 类型的参数不可迭代”?
【发布时间】:2011-10-04 20:55:43
【问题描述】:

这是我编写的一些 Python 代码,用于生成随机扑克牌,只是为了玩游戏/挑战,但是当我尝试运行它时,我在“如果手中有牌”行出现错误”。发生了什么,为什么会发生这种情况,尤其是因为该行没有迭代?

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

【问题讨论】:

    标签: python if-statement iteration typeerror


    【解决方案1】:

    hand = hand.append(card)

    append 不返回任何内容。将其更改为:

    hand.append(card)

    【讨论】:

    • ...doh。我知道。感谢您提醒我列表使用的基础知识之一。 ...仍然不知道我是怎么忘记的。再次感谢。
    【解决方案2】:

    列表的append() 方法不返回列表,它会修改它。因此,在添加第一张卡片(使用hand = hand.append(card))后,hand 被设置为append() 的返回值,即None(没有显式return 的方法的返回值)。你应该把它改成hand.append(card)

    【讨论】:

      【解决方案3】:

      list.append 不返回附加值的列表,而是将值原地附加到列表并返回无。改为这样做:

      else:
      hand.append(card) ...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-15
        • 2012-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多