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

如何实现字典元素随机无重复遍历,避免重复提问?

实现无重复随机提问字典中的国家首都问题

你的代码出现重复提问的核心原因:每次循环都通过random.choice(list(capitals.keys()))从全部国家列表里随机选,没有排除已提问过的国家,再加上循环次数等于字典的长度,必然会出现重复提问,甚至可能有国家被多次选中、部分国家从未被问到的情况。

要实现无重复的随机提问,正确思路是先把所有国家的列表打乱,再按打乱后的顺序逐个提问,确保每个国家仅被问到一次。

修改后的代码如下:

import random

capitals = {
    "Canada": "Toronto",
    "Spain": "Madrid",
    "Germany": "Berlin",
    "Belgium": "Brussels",
    "Australia": "Sydney",
}

# 提取所有国家转为列表并打乱顺序
countries = list(capitals.keys())
random.shuffle(countries)

# 遍历打乱后的列表逐个提问
for country in countries:
    capital = capitals[country]
    question = input(f"What is the capital of {country}? : ")
    if question == capital:
        print("Congratulations!\n")
    else:
        print(f"Wrong! The correct answer: {capital}\n")

关键修改说明

  • 先用list(capitals.keys())提取所有国家到列表,再通过random.shuffle()直接打乱列表顺序,保证每个国家仅出现一次。
  • 遍历打乱后的列表而非原字典的items,彻底避免了每次循环随机选国家导致的重复问题。

这样每次运行程序时,所有国家都会被问到一次,且提问顺序完全随机,不会出现重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:10:29