• Python之“诗词大会”游戏


            需求分析:要先设计题库,然后在规定时间内循环随机出题,判断输入的答案是否正确,并统计答对问题的次数,如果答题时间到,则退出循环,结束答题。

            具体实现步骤:

    1、创建字典bank保存题库,问题为键,正确答案为值。问题使用元组保存,题干和选项为元组的元素。

    2、使用keys()方法获取bank的所有键(问题),然后使用list()方法转换为列表ba。

    3、创建变量time1、number和count。time1表示开始时间,使用time模块的time()函数获取。number保存问题在ba列表中的索引,初始赋值为空列表。count统计答对问题的次数,初始赋值为0.

    4、使用while循环,判断条件为True,在循环中进行以下操作:

    4.1、使用randint()函数生成一个0-len(ba)-1的随机整数index,作为列表的索引。判断index是否在number中(即该索引对应的问题是否已经出现过了)如果是则使用continue结束本次循环,否则将Index添加到number中

    4.2、使用for循环输出ba[index]中的元素

    4.3、使用input()函数输入答案,并赋给answer。然后判断answer与该问题的答案是否相等,并且输出是否答对提示,答对则将count加1.

    4.4、使用time模块的time()函数获取当前时间,并赋给time2.然后计算time2和time1的差值,判断差值是否大于规定时间,如果是则输出count,并退出循环。

    1. import random
    2. import time
    3. #创建字典bank,问题为“键”,答案为“值”
    4. bank = {
    5. ('点字成诗(九宫格),从下面九个字中识别一句诗词。', '花 多 又', '知 逢 时', '雨 少 落'): '花落知多少',
    6. ('点字成诗(十二宫格),从下面十二个字中识别一句诗词。', '柳 生 一 白', '云 亮 有 家', '花 处 人 暗'): '白云生处有人家',
    7. ('“会当凌绝顶,一览众山小。”描写的是哪座山?', 'A.庐山', 'B.黄山', 'C.泰山'): 'C',
    8. ('请问:《望庐山瀑布》的作者是下面哪位诗人?', 'A.王维', 'B.李白', 'C.杜甫'): 'B',
    9. ('填空:窗含( )岭千秋雪。', 'A.东', 'B.南', 'C.西'): 'C',
    10. ('请问:名句“海上生明月,天涯共此时”出自下面哪首诗?', 'A.杜甫《月夜忆舍弟》', 'B.张九龄《望月怀远》', 'C.李白《闻王昌龄左迁龙标遥有此寄》'): 'B',
    11. ('请问:成语“寸草春晖”出自下面哪首诗?', 'A.白居易《赋得古原草送别》', 'B.苏轼《春夜》', 'C.孟郊《游子吟》'): 'C',
    12. ('请问:下面成语中哪个不是出自杜牧的诗?', 'A.豆蔻年华', 'B.折戟沉沙', 'C.壮志未酬'): 'C',
    13. ('填空:( )十三余,豆蔻枝头二月初。',): '娉娉袅袅',
    14. ('填空:花径不曾( )客扫,蓬门今始为君开。',): '缘',
    15. ('请问:中国古代有四大美女,请问宋代王安石《明妃曲》写的是其中哪一位?', 'A.西施', 'B.王昭君', 'C.貂蝉'): 'B',
    16. ('请根据下面线索说出一位诗人?', 'A.宋代一位著名的状元', 'B.中国历史上的一位民族英雄', 'C.创作有名句“人生自古谁无死,留取丹心照汗青。”'): '文天祥',
    17. }
    18. #获取bank的所有键,并转换为列表
    19. ba=list(bank.keys())
    20. number=[] #创建空列表,保存题目的索引
    21. count=0 #答对的问题数
    22. time1=time.time() #开始时间
    23. while True:
    24. # 生成0-len(ba)-1的随机整数index,即通过随机索引下标来选取题目
    25. index=random.randint(0,len(ba)-1)
    26. if index in number: #如果index在number中
    27. continue #结束本次循环
    28. number.append(index) #将index添加到number中
    29. for it in ba[index]: #遍历问题元组中的元素
    30. print(it) #输出问题
    31. answer=input('请输入正确答案:')
    32. if answer==bank[ba[index]]: #如果答案正确
    33. print('恭喜你,答对了!')
    34. count+=1 #答对的问题数加1
    35. else:
    36. print('很遗憾,答错了!')
    37. time2=time.time() #获取当前时间
    38. de_time=int(time2-time1) #计算答题总时间
    39. if de_time>30:
    40. print('时间到,答题结束!您本次答对',count,'道题')
    41. break
  • 相关阅读:
    IP地理位置定位技术:保护网络安全的新利器
    深圳市福田区支持文化创意产业发展若干措施
    leetcode:6151. 统计特殊整数【数位dp模板】
    mmdetection源码解读:何时注册HOOKS、MODELS、DATASETS
    网络安全笔记 -- 文件操作(文件下载读取)
    SpringCloud + SpringGateway 解决Get请求传参为特殊字符导致400无法通过网关转发的问题
    【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
    [go学习笔记.第十六章.TCP编程] 1.基本介绍以及入门案例
    .NET Core中JWT+Auth2.0实现SSO,附完整源码(.NET6)
    【人脸识别】基于matlab GUI人数统计【含Matlab源码 2121期】
  • 原文地址:https://blog.csdn.net/qq_62731133/article/details/127397873