Python背单词小程序附源码,背四六级的好帮手
今天要给大家分享的是一款自己写的背英语四六级单词的小程序,那么就可以天天记单词了!大家游戏玩累了可以背背单词,休息休息。
小面是它的运行示例:
接下来介绍一下其原理和原理:
一、代码整体功能概述
这段代码实现了一个英语词汇游戏,玩家可以选择不同的词库(四级词库或四八级词库),游戏会随机抽取词汇的英文部分并给出四个随机的中文词汇选项,其中一个是正确的释义,玩家选择后根据回答情况计分并决定是否继续游戏,主要目的是测试玩家的词汇量。
二、模块导入
import random
from wordbase import siji_chinese, siji_data, siba_data_chinese, siba_data_all
import os
import datetime as t
random
模块用于生成随机数,这在随机抽取词汇和选项时会用到。wordbase
模块导入了与不同词库相关的数据,如四级词库的中文和全部数据、四八级词库的中文和全部数据等。os
模块,用于执行与操作系统相关的操作,在这里主要是用于清空控制台(os.system('cls')
,在 Windows 系统下有效)。datetime
模块并别名为 t
,用于记录玩家答题的时间。三、全局变量定义
all_chinese = []
all_data = []
score = 0
time_count = 0
count = 0
all_chinese
:用于存储中文列数据,根据后续代码,会根据所选词库将对应的中文词汇列表赋值给它。all_data
:用于存储所有数据,同样会依据所选词库赋予相应的词汇数据(包含英文和中文部分等)。score
:初始化玩家的分数为 0,玩家每答对一题加 10 分,若答题时间超过 4 秒会扣 6 分。time_count
:初始化总用时为 0,用于累计玩家每次答题所花费的时间。count
:作为计数器,初始化为 0,用于记录玩家已经回答的题目数量。四、函数分析
1. get_random_chinese
函数
def get_random_chinese():
# 声明全局变量部分省略
answer = all_data[random.randint(0, len(all_data) - 1)]
part_new_data_english = answer[0]
part_new_data_chinese = answer[1]
choice_list2 = []
order = ["A", "B", "C", "D", "."]
for i in range(4):
temp_chinese = all_chinese[random.randint(0, len(all_data) - 1)]
choice_list2.append(order[i] + order[4] + temp_chinese)
new_index = random.randint(0, 3)
# 根据新索引设置正确选项和相关变量部分省略
count += 1
print("第" + str(count) + "题:")
print(part_new_data_english + "的中文释义是:\n")
for i in range(4):
print(choice_list2[i])
print("\n")
t1 = t.datetime.now()
user_choice = input("你的选择是:")
t2 = t.datetime.now()
dt = int((t2 - t1).total_seconds())
time_count += dt
if user_choice == choice or user_choice == choice2 or user_choice == choice3:
print("回答正确!")
score += 10
os.system('cls')
print("上一题用时:" + str(dt) + "秒\n")
if dt >= 4:
score -= 6
get_random_chinese()
else:
print("回答错误!正确答案是:" + answer[1])
print("共答对" + str(count - 1) + "题,得分" + str(score) + "分,\n总用时:" + str(time_count) + "秒\n" + "游戏结束!")
if_exit = input("是否退出游戏?(1 or y/n or Enter):\n")
if if_exit == "y" or if_exit == "1":
exit()
else:
count = 0
score = 0
time_count = 0
os.system('cls')
clist()
all_data
中随机获取一行数据,分离出英文部分和中文部分。choice_list2
,并随机将其中一个选项替换为正确的中文释义。clist
函数)。2. clist
函数
def clist():
# 声明全局变量部分省略
choice_list1 = input("请选择词库:\na.四级词库(4616个词汇)(默认按Enter键)\nb.四八级词库(12815个词汇)\n请输入:(参数包含:a、A、b、B、Enter)")
print(choice_list1)
if choice_list1 == "a":
all_chinese = siji_chinese
all_data = siji_data
print("您选择了四级词库")
print("\n")
get_random_chinese()
elif choice_list1 == "A":
all_chinese = siji_chinese
all_data = siji_data
print("您选择了四级词库")
print("\n")
get_random_chinese()
elif choice_list1 == "":
all_chinese = siji_chinese
all_data = siji_data
print("您选择了四级词库")
print("\n")
get_random_chinese()
elif choice_list1 == "b":
all_chinese = siba_data_chinese
all_data = siba_data_all
print("您选择了四八级词库")
print("\n")
get_random_chinese()
elif choice_list1 == "B":
all_chinese = siba_data_chinese
all_data = siba_data_all
print("您选择了四八级词库")
print("\n")
get_random_chinese()
else:
print("输入错误!请重新输入!")
clist()
all_chinese
和 all_data
全局变量。get_random_chinese
函数开始游戏。五、主程序部分
print("欢迎来到英语词汇游戏!")
print("程序设计:郭航\nQQ:3600673534 \n个人博客:https://3660302549lyy.github.io(获取更多资源或最新版本)\n(手机访问时请关闭流量使用WiFi,或使用加速器,谢谢)\n版本:v1.0\n语言:Python 3.7.4\n操作系统:Windows")
print("游戏目标:测试玩家的词汇量。\n")
print("游戏规则:每一轮游戏,系统会随机选择一行数据,并给出四个随机中文词汇,其中有一个是正确的中文释义。\n玩家需要根据英文部分的中文释义,选择正确的中文释义。\n如果玩家回答错误,则游戏结束,并给出正确答案。如果玩家回答正确,则系统加10分,并继续游戏。(但答题时间超过4秒,系统扣6分)\n\n玩家可以选择退出游戏。")
print("答出正确的中文释义前的字母可以是A、B、C、D或a、b、c、d或1、2、3、4分别表示选择的中文释义。\n")
input("按Enter键开始游戏!")
os.system('cls')
clist()
clist
函数让玩家选择词库,进而开始游戏流程。下面是它的完整代码:
import random
from wordbase import siji_chinese,siji_data,siba_data_chinese,siba_data_all
import os
import datetime as t
all_chinese=[] #存储中文列数据
all_data=[] #存储所有数据
score=0 #初始化分数
time_count=0 #初始化总用时
count=0 #计数器
def get_random_chinese():
global count #声明全局变量
global time_count #声明全局变量
global score #声明全局变量
answer=all_data[random.randint(0,len(all_data)-1)] #获取随机行数据
part_new_data_english=answer[0] #获取英文部分数据
part_new_data_chinese=answer[1] #获取中文部分数据
choice_list2=[]
order=["A","B","C","D","."]
for i in range(4):
temp_chinese=all_chinese[random.randint(0, len(all_data) - 1)]
choice_list2.append(order[i] +order[4]+temp_chinese) #生成四个随机中文词汇列表
new_index=random.randint(0,3)
if new_index == 0:
choice_list2[new_index]="A."+part_new_data_chinese #将新数据英文替换为随机中文词汇
choice="A"
choice2="a"
choice3="1"
elif new_index==1:
choice_list2[new_index]="B."+part_new_data_chinese #将新数据英文替换为随机中文词汇
choice="B"
choice2="b"
choice3="2"
elif new_index==2:
choice_list2[new_index]="C."+part_new_data_chinese #将新数据英文替换为随机中文词汇
choice="C"
choice2="c"
choice3="3"
else:
choice_list2[new_index]="D."+part_new_data_chinese #将新数据英文替换为随机中文词汇
choice="D"
choice2="d"
choice3="4"
count += 1 # 计数器加1
print("第"+str(count)+"题:") #输出英文部分数据
print(part_new_data_english+"的中文释义是:\n") #用户输入选项
for i in range(4):
print(choice_list2[i]) #输出四个随机中文词汇列表
print("\n") #输出正确答案
t1 = t.datetime.now()
user_choice = input("你的选择是:") # 输出用户选择
t2 = t.datetime.now()
dt = int((t2 - t1).total_seconds()) # 计算用时
time_count += dt
if user_choice==choice or user_choice==choice2 or user_choice==choice3: #判断用户选择是否正确
print("回答正确!")
score+=10 #每回答正确加10分
os.system('cls') #清空控制台
print("上一题用时:"+str(dt)+"秒\n") # 输出用时
if dt>=4: #每分钟加10分
score-=6
get_random_chinese() #递归调用函数,继续游戏
else:
print("回答错误!正确答案是:"+answer[1]) #输出正确答案
print("共答对"+str(count-1)+"题,得分"+str(score)+"分,\n总用时:"+str(time_count)+"秒\n"+"游戏结束!") #输出总用时
if_exit=input("是否退出游戏?(1 or y/n or Enter):\n") #用户输入是否退出游戏
if if_exit=="y" or if_exit=="1":
exit() #退出游戏
else:
count = 0 # 计数器清零
score = 0 # 分数清零
time_count = 0 # 总用时清零
os.system('cls') #清空控制台
clist() #递归调用函数,继续游戏
def clist():
global all_chinese #声明全局变量
global all_data #声明全局变量
choice_list1=input("请选择词库:\na.四级词库(4616个词汇)(默认按Enter键)\nb.四八级词库(12815个词汇)\n请输入:(参数包含:a、A、b、B、Enter)")
print(choice_list1)
if choice_list1=="a":
all_chinese=siji_chinese #存储中文列数据
all_data=siji_data #存储所有数据
print("您选择了四级词库") #输出中文列数据
print("\n")
get_random_chinese() #递归调用函数,开始游戏
elif choice_list1=="A":
all_chinese=siji_chinese #存储中文列数据
all_data=siji_data #存储所有数据
print("您选择了四级词库") #输出中文列数据
print("\n")
get_random_chinese() #递归调用函数,开始游戏
elif choice_list1=="":
all_chinese=siji_chinese #存储中文列数据
all_data=siji_data #存储所有数据
print("您选择了四级词库") #输出中文列数据
print("\n")
get_random_chinese() #递归调用函数,开始游戏
elif choice_list1=="b":
all_chinese=siba_data_chinese #存储中文列数据
all_data=siba_data_all #存储所有数据
print("您选择了四八级词库") #输出中文列数据
print("\n")
get_random_chinese() #递归调用函数,开始游戏
elif choice_list1=="B":
all_chinese=siba_data_chinese #存储中文列数据
all_data=siba_data_all #存储所有数据
print("您选择了四八级词库") #输出中文列数据
print("\n")
get_random_chinese() #递归调用函数,开始游戏
else:
print("输入错误!请重新输入!")
clist() #递归调用函数,继续游戏
#原创作者:兜兜名创
print("欢迎来到英语词汇游戏!")
print("程序设计:兜兜名创\nQQ:3600673534 \n个人博客:https://3660302549lyy.github.io(获取更多资源或最新版本)\n(手机访问时请关闭流量使用WiFi,或使用加速器,谢谢)\n版本:v1.0\n语言:Python 3.7.4\n操作系统:Windows")
print("游戏目标:测试玩家的词汇量。\n")
print("游戏规则:每一轮游戏,系统会随机选择一行数据,并给出四个随机中文词汇,其中有一个是正确的中文释义。\n玩家需要根据英文部分的中文释义,选择正确的中文释义。\n如果玩家回答错误,则游戏结束,并给出正确答案。如果玩家回答正确,则系统加10分,并继续游戏。(但答题时间超过4秒,系统扣6分)\n\n玩家可以选择退出游戏。")
print("答出正确的中文释义前的字母可以是A、B、C、D或a、b、c、d或1、2、3、4分别表示选择的中文释义。\n")
input("按Enter键开始游戏!") #用户输入任意键开始游戏
os.system('cls') #清空控制台
clist() #调用函数,开始游戏
六、总结
有需要的小伙伴可以在作者的蓝奏云软件库(提取码:6666)进行下载,软件名称是English_study.exe
对于这个项目我将会把他改为类似于小猿口算的PK模式,敬请期待吧!
在此之前,小编还做过一个项目,感兴趣的可以看上一篇。
最后,谢谢大家的阅读。
作者:兜兜名创