python-3.x 列表中出现意外的“None”

olmpazwi  于 2022-12-01  发布在  Python
关注(0)|答案(2)|浏览(225)

我想做一个游戏,你猜字母。并添加一个功能,将显示你所有你不正确的猜测,所以我做了列表:

incorrectguesses = []

然后我让它让用户猜字母

while True:
    guess = input("what do you think the letter is??  ")
    if guess == secret_letter:
        print("you guessed it!")
        break
    else:
        incorrectguesses += [guess]

你可以看到我把这个猜测加到了列表中,如果它是错的。
然后,我添加了一个函数来打印给定列表中的每一项:

def print_all_items(list_): 
    for x in list_: 
        print(x)

然后在循环结束时运行函数:

print(print_all_items(incorrectguesses))

但结果是这样:
你认为这封信是什么?
一种

你认为这封信是什么
一种
最佳

如您所见,它将“None”添加到列表的末尾。
如果你能帮我的话谢谢

8ehkhllq

8ehkhllq1#

print(print_all_items(incorrectguesses))

您正在打印print_all_items()函数的 result
但是,该函数没有return语句,因此默认情况下返回None
所以,函数的 resultNone,它会被输出。
由于函数本身打印结果,我认为您实际上只是想 * 调用 * 函数,而不是 * 打印 * 其结果。

ruyhziif

ruyhziif2#

正如其他人早些时候指出的那样(比我更早),这是因为您打印的函数没有return。(在最后的深入解释中)。

while True:
    guess = input("what do you think the letter is??  ")
if guess == secret_letter:
    print("you guessed it!")
    break
else:
    incorrectguesses += [guess]
    print_all_items(incorrectguesses) # ←

您要调用函数,而不是打印它。
这样,函数就会运行,并打印incorrectguesses的元素。

说明

执行print(<something>)时,print()函数正在等待返回值。
在这个例子中,因为<something>是一个函数,Python在print()“内部”运行这个函数。当你的函数print_all_items()运行时,它会打印列表中的所有元素。一旦print_all_items()完成运行,并打印了所有元素,函数就不会返回值,所以它默认为None。因此,X1 M10 N1 X所等待的X1 M9 N1 X的值被赋予X1 M11 N1 X值。
希望我能帮上忙!

相关问题