当前位置: 首页 > news >正文

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,并退出循环。

import random
import time

#创建字典bank,问题为“键”,答案为“值”
bank = {
    ('点字成诗(九宫格),从下面九个字中识别一句诗词。', '花 多 又', '知 逢 时', '雨 少 落'): '花落知多少',
    ('点字成诗(十二宫格),从下面十二个字中识别一句诗词。', '柳  生  一  白', '云  亮  有  家', '花  处  人  暗'): '白云生处有人家',
    ('“会当凌绝顶,一览众山小。”描写的是哪座山?', 'A.庐山', 'B.黄山', 'C.泰山'): 'C',
    ('请问:《望庐山瀑布》的作者是下面哪位诗人?', 'A.王维', 'B.李白', 'C.杜甫'): 'B',
    ('填空:窗含( )岭千秋雪。', 'A.东', 'B.南', 'C.西'): 'C',
    ('请问:名句“海上生明月,天涯共此时”出自下面哪首诗?', 'A.杜甫《月夜忆舍弟》', 'B.张九龄《望月怀远》', 'C.李白《闻王昌龄左迁龙标遥有此寄》'): 'B',
    ('请问:成语“寸草春晖”出自下面哪首诗?', 'A.白居易《赋得古原草送别》', 'B.苏轼《春夜》', 'C.孟郊《游子吟》'): 'C',
    ('请问:下面成语中哪个不是出自杜牧的诗?', 'A.豆蔻年华', 'B.折戟沉沙', 'C.壮志未酬'): 'C',
    ('填空:( )十三余,豆蔻枝头二月初。',): '娉娉袅袅',
    ('填空:花径不曾( )客扫,蓬门今始为君开。',): '缘',
    ('请问:中国古代有四大美女,请问宋代王安石《明妃曲》写的是其中哪一位?', 'A.西施', 'B.王昭君', 'C.貂蝉'): 'B',
    ('请根据下面线索说出一位诗人?', 'A.宋代一位著名的状元', 'B.中国历史上的一位民族英雄', 'C.创作有名句“人生自古谁无死,留取丹心照汗青。”'): '文天祥',
}
#获取bank的所有键,并转换为列表
ba=list(bank.keys())
number=[] #创建空列表,保存题目的索引
count=0 #答对的问题数
time1=time.time() #开始时间
while True:
     # 生成0-len(ba)-1的随机整数index,即通过随机索引下标来选取题目
     index=random.randint(0,len(ba)-1)
     if index in number: #如果index在number中
         continue #结束本次循环
     number.append(index) #将index添加到number中
     for it in ba[index]: #遍历问题元组中的元素
         print(it) #输出问题
     answer=input('请输入正确答案:')
     if answer==bank[ba[index]]: #如果答案正确
         print('恭喜你,答对了!')
         count+=1 #答对的问题数加1
     else:
         print('很遗憾,答错了!')
     time2=time.time() #获取当前时间
     de_time=int(time2-time1) #计算答题总时间
     if de_time>30:
         print('时间到,答题结束!您本次答对',count,'道题')
         break

相关文章:

  • MySQL:索引知识点盘点
  • 大神之路-起始篇 | 第9章.计算机科学导论之【程序设计语言】学习笔记
  • Python 的Tkinter包系列之四:对话框
  • 大神之路-起始篇 | 第8章.计算机科学导论之【数据算法】学习笔记
  • IDET变化检测模型
  • javascript基本语法(持续补充)
  • Spring Boot开发之Mybatis
  • 卷王杯 easy unserialize
  • 常见Web安全漏洞深入解析
  • 如何从一款单片机移植到另一款单片机
  • linux创建用户和组、授权、禁止root远程登录、限制SSH的IP登录
  • 10大开源的快速开发平台—架构师必看
  • 3399-9.0 驱动根据vid和pid获取摄像头数量
  • Pandas DataFrame 保存到HTML文件(附炫酷 HTML Table 模板网站)
  • java过滤器(Filter)
  • Android单元测试 - 几个重要问题
  • CSS 三角实现
  • css属性的继承、初识值、计算值、当前值、应用值
  • golang中接口赋值与方法集
  • iOS小技巧之UIImagePickerController实现头像选择
  • Promise面试题,控制异步流程
  • QQ浏览器x5内核的兼容性问题
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 阿里云应用高可用服务公测发布
  • 给github项目添加CI badge
  • 模型微调
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 项目管理碎碎念系列之一:干系人管理
  • 一个项目push到多个远程Git仓库
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #{} 和 ${}区别
  • #pragma once
  • $.ajax()
  • (1)svelte 教程:hello world
  • (10)ATF MMU转换表
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (LeetCode 49)Anagrams
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (推荐)叮当——中文语音对话机器人
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (五)Python 垃圾回收机制
  • (一) springboot详细介绍
  • (一)UDP基本编程步骤
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET的数据绑定