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模式,敬请期待吧!

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

    最后,谢谢大家的阅读。

    作者:兜兜名创

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python背单词小程序附源码,背四六级的好帮手

    发表回复