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

如何在Python 3的印度地图测验中实现无重复随机出题

印度地图测验代码优化:实现全随机无重复出题

当前代码仅支持单次出题,要实现随机选取未出过题的印度邦、直到所有邦仅出题一次,可以通过打乱列表顺序后遍历的方式实现,修改后的完整代码如下:

from easygui import *
from time import *
from statedict import *
import random

correctnum = 0
questionsanswered = 0
print("Indian Map Quiz v1")
sleep(0.5)
print("Note all features might not work correctly, this is a work in progress.")

msgbox("Welcome to Indian Map Quiz", "INDIA", "Continue")

title = "Guess The State"
msg = "What Indian state is this?"

stateFactList = [APdict, ARdict, ASdict, BRdict, CTdict, GAdict, GJdict, HPdict, HRdict, JHdict,
                 KAdict, KLdict, MHdict, MLdict, MNdict, MPdict, MZdict, NLdict, ODdict, PBdict,
                 RJdict, SKdict, TGdict, TNdict, TRdict, UPdict, UTdict, WBdict]

# 随机打乱邦列表顺序,确保每个邦仅出现一次
random.shuffle(stateFactList)

# 遍历所有邦,逐个出题
for stateID in stateFactList:
    print(stateID["state"])
    stateQuestion = buttonbox(msg=msg, title=title, choices=stateID["choices"], image=stateID["image file"])
    
    questionsanswered += 1
    if stateQuestion == stateID["correct"]:
        print("回答正确!")
        correctnum += 1
    else:
        print(f"回答错误,正确答案是:{stateID['correct']}")

# 测验结束后展示最终结果
msgbox(f"测验结束!\n总答题数:{questionsanswered}\n正确数:{correctnum}\n正确率:{correctnum/questionsanswered*100:.1f}%", "测验结果", "退出")

关键改动说明

  • 随机无重复逻辑:通过random.shuffle()打乱stateFactList的顺序,遍历打乱后的列表即可保证每个邦仅出题一次,且顺序完全随机
  • 循环出题:用for循环遍历所有邦数据,自动完成全量出题流程
  • 体验优化:错误答题时提示正确答案,测验结束后弹出统计结果,包含总题数、正确数和正确率

内容的提问来源于stack exchange,提问作者Mohammed Aayan Pathan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:15:30