【问题标题】:Python: not iterable error on trying to look up two listsPython:尝试查找两个列表时出现不可迭代错误
【发布时间】:2019-09-18 20:17:09
【问题描述】:

我有以下代码,仅当变量在第一个列表中而不在第二个列表中时才试图继续。

问题出在下面,我认为:

if word2player2 in A_words:
            if word2player2 not in usedlist:

完整的 Python 代码(用于相关函数)

def play():
    print("====PLAY===")
    score=0
    usedlist=[]
    A_words=["Atrocious","Apple","Appleseed","Actually","Append","Annual"]
    word1player1=input("Player 1: Enter a word:")
    usedlist=usedlist.append(word1player1)
    print(usedlist)
    if word1player1 in A_words:
        score=score+1
        print("Found, and your score is",score)
    else:
        print("Sorry, not found and your score is",score)

    word2player2=input("Player 2: Enter a word:")
    if word2player2 in A_words:
        if word2player2 not in usedlist:
            usedlist=usedlist.append(word2player2)
            print("Found")
    else:
            print("Sorry your word doesn't exist or has been banked")
            play()

错误信息是:

  File "N:/Project 6/Mini_Project_6_Solution2.py", line 67, in play
    if word2player2 not in usedlist:
TypeError: argument of type 'NoneType' is not iterable

我正在使用“in”和“not in”..这不起作用。我也尝试在一行上使用

如果 A_words 中的 word2player2 和 word2player2 不在 usedlist 中:>> 但这也不起作用。

感谢任何 cmets。

【问题讨论】:

  • usedlist.append(word1player1)替换usedlist=usedlist.append(word1player1)

标签: python list search iterable


【解决方案1】:

append 方法添加了“就地”元素,这意味着它不会返回新列表,而是更新调用该方法的原始列表。因此它什么也不返回 (None) 并且您收到此错误。

正如其他 cmets 建议的那样,而不是重新分配变量

usedlist=usedlist.append(word1player1)

只需应用 append 函数,usedlist 就会有新的期望值:

usedlist.append(word1player1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多