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()  
  • 首先输出游戏的欢迎信息、作者相关信息、游戏目标和规则等内容。
  • 等待玩家按 Enter 键开始游戏,之后清空控制台并调用 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模式,敬请期待吧!

在此之前,小编还做过一个项目,感兴趣的可以看上一篇

最后,谢谢大家的阅读。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值