前面我们学了很多零散的知识点:for循环、列表、随机库、time库……今天,我们把这些知识组合起来,做一个真正能用的程序——打字练习小游戏。
程序启动后:
1、显示一个单词,
2、用户输入,
3、判断对错,计分,
4、重复10次后显示成绩。
可以看得出来,这个程序需要用到循环,并且是已知循环次数10次,所以用for循环。
1、整体框架
既然要用到循环,并且循环次数是10次,所以程序的整体框架就是:
做准备工作
for i in range(10):
显示单词
用户输入
判断对错
显示成绩
2、做哪些准备工作
(1)导入需要的库
import random
import time
(2)建立词库
因为要存很多单词,所以不适合用普通变量,适合用列表
因为篇幅原因,列表中只有4个元素,在完整代码中,可以随意增加。
(3)计分
在正式开始前,需要准备一个计分牌,初值为0,用户答对1题就加10分
score = 0
(4)输出程序标题、规则或其他
用print()语句,输出标题、规则或其他信息,这里就可以自己发挥了。
比如:
3、for循环【重点】
把循环里的三件事逐一拆开看:
(1)如何显示单词
每次都是从词库中随机选一个单词,我们已经学习过“捞”数据。
从words列表中捞出来的数据放到word变量中
word = random.choice(words)
(2)如何让用户输入并计时
我们已经学习过输入语句input(),计时工具time.time()
start = time.time()
user_input = input("请打出: " + word + " → ")
end = time.time()
start-end就是用户输入单词所用的时间
(3)如何判断对错
我们还没有学习到if语句,但我相信,你一定能看懂下面的语句
if user_input == word:
score = score + 10
print("✅ 正确")
else:
print("❌ 错误,正确答案是:“ + word)
4、显示成绩
循环结束后,把成绩显示出来,这里也可以自己发挥
比如:
本次代码比较长,会提供下载。可以关注本公众号,在后台回复关键词:打字小程序,即可获取下载链接运行后的效果:
1、增加用户的自由度
思路1:测试题目数量由用户决定
现在的版本是固定10题。如果让用户自己输入题目数量呢?
total = int(input("你想练习几题?"))
for i in range(total):
循环体
思路2:词库由用户决定:你想测试哪些单词?
如果用户想测试自己准备好的单词呢?
让用户一个个地输入,添加到words列表中
从记事本文件一次性导入
这里需要用到列表的添加功能、while循环、文件操作,以后再介绍
2、计时更精细
现在的版本只显示了“每题用时”。还能显示什么?
3、鼓励机制:
游戏结束后,根据成绩给出不同的反馈:
4、增加难度
每次答对后,单词长度逐渐增加。比如当前单词是 python(6个字母),答对了,下一个单词就变成更长的。