如何在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
相关产品推荐
相关产品推荐

