You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环使用random实现无重复单词Bingo游戏报错求助

单词Bingo游戏问题修复方案

问题原因解析

  • random.shuffle引发NonType错误:random.shuffle()是原地修改列表的函数,执行后返回None,你尝试遍历None自然会触发错误。正确用法是先调用它打乱列表,再遍历原列表。
  • random.sample导致单词重复:random.sample(list, 1)每次都从原始列表中选取元素,不会移除已选中的单词,所以会出现重复。

修正后的代码

import random

print "Let's play Bingo!"
print

# 获取用户输入的单词列表
bingo_words = raw_input("First enter your bingo words: ") 
word_list = bingo_words.split()

# 随机打乱单词顺序
random.shuffle(word_list)

print 
print "Okay, let's go! Press Enter to show a word, type anything to quit."

# 遍历打乱后的单词,逐个展示
for word in word_list:
    user_input = raw_input()
    if user_input == "":
        print(word)
    else:
        print "That's the end of the game ^.^"
        break
# 所有单词展示完毕后的提示
else:
    print "\nAll bingo words are shown! Game over ^.^"

关键改动说明

  1. 变量名规范:把list改为word_list,避免和Python内置类型重名,防止潜在问题。
  2. 输入处理优化:用raw_input()替代input(),Python2中input()会解析输入为表达式,raw_input()直接获取字符串更安全。
  3. 遍历逻辑修正:先打乱列表,再直接遍历打乱后的列表,确保每个单词只被展示一次,无重复。
  4. 交互流程简化:移除多余的等待回车操作,用户按一次回车就展示下一个单词,逻辑更流畅。
  5. 完整结束提示:添加for-else结构,当所有单词展示完毕时,自动提示游戏结束。

内容的提问来源于stack exchange,提问作者Sgathach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:05:24