鱼C论坛

 找回密码
 立即注册
查看: 6781|回复: 21

[作品展示] 一个能帮你背单词的程序 V4.0

[复制链接]
发表于 2022-2-12 15:24:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
上一个版本:传送门


此版本更新了四处:
1.增加了检查用户设定的列表是否合法的代码,防止报错
2.增加了在用户输入的答案为 "不会" 或错误时,会进行纠正处理
2.通过@小伤口 的热心建议,加强了检查用户在 IDLE 模式下回答问题时选择的选项是否合法部分的代码
3.也是通过@小伤口 的热心建议,更新了另一种模式 —— 图形界面

小缺陷:
1.代码还没有进行压缩,精炼,有太多沉余
2.做的图形界面实在太丑了,而且只能用 Ctrl + C 退出
3.老生常谈的话题  —— 还未丰富词库 —— 可能是我太懒了
4.老生常谈的话题  —— 还不能分多批背诵 —— 可能是我太懒了

废话不多说,上代码::
import easygui as eg
import random

def make_button(ranswer,mean_list): #生成选项
    global style
    number0 = mean_list.index(ranswer) #计算出正确翻译 ranswer 在翻译列表 mean_list 里的索引
    number1 = random.randint(0,len(mean_list) - 1) #生成出除 number0 之外的随机索引
    while number1 == number0:
        number1 = random.randint(0,len(mean_list) - 1)
    number2 = random.randint(0,len(mean_list) - 1) #生成除 number0 和 number1 之外的随机索引
    while number2 == number0 or number2 == number1:
        number2 = random.randint(0,len(mean_list) - 1)

    button = [mean_list[number0],mean_list[number1],mean_list[number2]] #生成答案与假答案的混合列表  
    button_list = random.sample(range(0,3),3) #生成将 button 列表的引用索引打乱后的顺序
    button_dict = {i[1] if style == 0 else button[int(i[0])]:button[int(i[0])] for i in zip([str(each) for each in button_list],["A","B","C"])} #合成随机提问选项

    return button_dict

def check_answer(I,first_know,i): #检查答案是否合法
    global answer
    global style
    question_style = 1 if I == 1 and first_know[i] == True else 0 #判断题目类型:0 是选择题, 1 是判断题
    alpha_list = ["A","B","C"] if question_style == 0 else ["A","B"] #判断题目前都有哪些序号
    if style == 0:
        while answer.isspace() or answer == "": #规范输入
            answer = input("请选择正确的一项:")
        while answer.strip().upper() not in alpha_list:
            answer = input("请选择正确的一项:")
    else:
        pass
    answer = answer.strip() #去掉选项两边可能存在的空格
    answer = answer.upper() #将用户输入的选项变成大写
    
def question(button_dict,guess,choose): #打印题目
    global style
    global answer
    if choose == 0: #打印选择意思题
        if style == 0:
            for each in button_dict.items():
                print(each[0],".",each[1])
        else:
            answer = eg.buttonbox(f"请选择单词 {guess} 的意思下方选项中的最贴切的一项:",choices = tuple([each[1] for each in button_dict.items()]))
    elif choose == 1:
        if style == 0:
            print(f"单词:{guess}")
            for each in zip(["A","B"],["会","不会"]):
                print(each[0],".",each[1])
        else:
            answer = eg.buttonbox(f"单词 {guess} 请节和你的自身情况给予回答:",choices = ("会","不会"))

def check_first_question(button_dict,answer,ranswer):
    print(button_dict,answer)
    global style
    if style == 0:
        if button_dict.get(answer) == ranswer: #如果猜对
            return True
        else:
            return False
    else:
        if button_dict.get(answer) == ranswer: #如果猜对
            return True
        else:
            return False

def over(word_list,now_heavy_list,heavy_list): #更新是否全部背完的列表
    finish = ["" for i in range(len(word_list))]
    for each in zip(now_heavy_list,heavy_list,range(len(word_list))):
        if each[0] >= each[1] or now_heav_list[each[2]] >= max_heav:
            finish[each[2]] = True
        else:
            finish[each[2]] = False
    return finish


word_list = ["nice","good","wow","cow","car","jar","mud","you","human","wine"] #可自行添加
mean_list = ["棒的","好的","表示吃惊","奶牛","车","坛子","泥土","你","人类","红酒"] #可自行添加

if len(word_list) != len(mean_list): #如果两个列表长度不等
    print("错误:请重新设置列表 mean_list 和 word_list 它们的长度必须一致!")
if len(mean_list) < 3 or len(word_list) < 3: #如果列表的元素小于三个
    print("错误:列表里的元素不能少于 3 个!")
while len(mean_list) < 3: #合法输入
    mean_list = input("请输入 mean_list 列表的元素(用逗号分隔,不用加方括号):").split(sep = ",")
    if len(mean_list) < 3: #如果列表的元素小于三个
        print("错误:列表里的元素不能少于 3 个!")

while len(word_list) != len(mean_list) or len(word_list) < 3: #合法输入
    word_list = input("请输入 word_list 列表的元素(用逗号分隔,不用加方括号):").split(sep = ",")
    if len(word_list) != len(mean_list): #如果两个列表长度不等
        print("错误:请重新设置列表 mean_list 和 word_list 它们的长度必须一致!")
    if len(mean_list) < 3 or len(word_list) < 3: #如果列表的元素小于三个
        print("错误:列表里的元素不能少于 3 个!")
    

jian = 1 #设置每道题之间是否插入间隔#######################可自行更改

heavy = 2 #设置默认每个要背出多少才算背会#######################可自行更改
heavy_list = [heavy for i in range(len(word_list))] #默认每个要背出的次数列表

now_heavy = 0 #设置每个默认已背出的次数#######################可自行更改
now_heavy_list = [now_heavy for i in range(len(word_list))] #默认每个已背出的次数列表


max_heav = 3 #设置每个单词最多的背诵次数#######################可自行更改

now_heav = 0 #设置每个默认已背的次数#######################可自行更改
now_heav_list = [now_heav for i in range(len(word_list))] #默认每个已背的次数列表


first_know = ["" for i in range(len(word_list))] #设置第一次就会的单词


finish = over(word_list,now_heavy_list,heavy_list)

print("""0:IDLE
1:图形界面""")
style = int(input("请输入要用哪个模式:"))


if style == 0:
    I = 0
    while not all(finish): #如果没有结束背诵任务
        i_list = random.sample(range(len(word_list)),len(word_list)) #不重复的随机抽选要提问的单词的先后顺序
        for i in i_list:
            if finish[i] == False: #如果这个单词还没有背完
                ranswer = mean_list[i] #设置正确的翻译
                guess = word_list[i] #设置要提问的单词

                button_dict = make_button(ranswer,mean_list)


                #打印题目部分
                if I == 1 and first_know[i] == True:
                    question(button_dict,guess,choose = 1) #打印判断题
                else:
                    question(button_dict,guess,choose = 0) #打印选择意思题

            
            
                #向用户提问选项部分
                if I == 1 and first_know[i] == True: #如果是判断题
                    answer = input("请节和你的自身情况给予回答:")
                else: #如果是选择题
                    answer = input(f"请选择单词 {guess} 的意思在上方选项中的最贴切的一项:")
                    
                check_answer(I,first_know,i) #强制用户合法输入


                #判断部分
                now_heav_list[i] += 1
                if I == 1 and first_know[i] == True: #如果是判断题
                    if answer == "A":
                        question(button_dict,guess,choose = 0) #提选择题
                        
                        answer = input(f"请选择单词 {guess} 的意思在上方选项中的最贴切的一项:")
                        check_answer(I,first_know,i) #强制用户合法输入

                        if check_first_question(button_dict,answer,ranswer): #如果猜对
                            now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
                            print("答对了!")
                        else: #如果没猜对
                            print("答错了!")
                            print(f"记住了!单词 {guess} 的中文是 {ranswer} !")
                    elif answer == "B":
                        print(f"记住了!单词 {guess} 的中文是{ranswer}!")
                    
                else:
                    if check_first_question(button_dict,answer,ranswer): #如果猜对
                        now_heavy_list[i] += 1 #增加答对的次数
                        if I == 0:
                            first_know[i] = True #设置此单词第一次提问时就会了
                        print("答对了!")
                    else: #如果没猜对
                        print("答错了!")
                        print(f"记住了!单词 {guess} 的中文是 {ranswer} !")


                #遮挡部分
                if jian:
                    for i in range(70): #打印间隔
                        print(f"{'|':^156}")
                    print()

            #更新 是否结束背诵任务
            finish = over(word_list,now_heavy_list,heavy_list)

            if all(finish): #如果都结束了,退出循环
                break
            
        I += 1 #更新目前提的遍数
        


    #计算尾部空格数量部分
    max_long_word_length = len(max(word_list,key = lambda x : len(x))) #计算出单词列表 word_list 中最长的一个单词的长度
    word_with_space = [(max_long_word_length * 3) - len(each) for each in word_list] #计算出每个单词后面跟着的空格数量列表# 3 是可更改的,最小为 2

    #向用户输出结尾部分
    print("\n" * 3) # 3 是可更改的
    print("你已背完了这些单词:{}!".format(",".join(word_list)))

    #输出每个单词的正确率部分
    True_list = [f"{now_heavy_list[i] / (now_heav_list[i]) if (now_heav_list[i]) > 0 else 1:.1%}" for i in range(len(word_list))] #每个单词的正确率列表
    print("你做题时对这些单词分别的正确率:")
    for each in zip(word_list,True_list,range(len(word_list))):
        space = " " * word_with_space[each[2]]
        print(f"单词{each[0]}{space}正确率:{each[1]}")
    

else:
    I = 0
    while not all(finish): #如果没有结束背诵任务
        i_list = random.sample(range(len(word_list)),len(word_list)) #不重复的随机抽选要提问的单词的先后顺序
        for i in i_list:
            if finish[i] == False: #如果这个单词还没有背完
                ranswer = mean_list[i] #设置正确的翻译
                guess = word_list[i] #设置要提问的单词

                button_dict = make_button(ranswer,mean_list)


                #打印题目部分
                if I == 1 and first_know[i] == True:
                    question(button_dict,guess,choose = 1) #打印判断题
                else:
                    question(button_dict,guess,choose = 0) #打印选择意思题


                #判断部分
                now_heav_list[i] += 1
                if I == 1 and first_know[i] == True: #如果是判断题
                    if answer == "会":
                        question(button_dict,guess,choose = 0) #提选择题

                        if check_first_question(button_dict,answer,ranswer): #如果猜对
                            now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
                            eg.msgbox("答对了")
                        else: #如果没猜对
                            eg.msgbox("答错了!")
                            eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")
                    elif answer == "不会":
                        eg.msgbox(f"记住了!单词 {guess} 的中文是{ranswer}!")
                    
                else:
                    if check_first_question(button_dict,answer,ranswer): #如果猜对
                        now_heavy_list[i] += 1 #增加答对的次数
                        if I == 0:
                            first_know[i] = True #设置此单词第一次提问时就会了
                        eg.msgbox("答对了!")
                    else: #如果没猜对
                        eg.msgbox("答错了!")
                        eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")



            #更新 是否结束背诵任务
            finish = over(word_list,now_heavy_list,heavy_list)

            if all(finish): #如果都结束了,退出循环
                break
            
        I += 1 #更新目前提的遍数
        


    #计算尾部空格数量部分
    max_long_word_length = len(max(word_list,key = lambda x : len(x))) #计算出单词列表 word_list 中最长的一个单词的长度
    word_with_space = [(max_long_word_length * 3) - len(each) for each in word_list] #计算出每个单词后面跟着的空格数量列表# 3 是可更改的,最小为 2

    #向用户输出结尾部分
    eg.msgbox("你已背完了这些单词:{}!".format(",".join(word_list)))

    #输出每个单词的正确率部分
    True_list = [f"{now_heavy_list[i] / (now_heav_list[i]) if (now_heav_list[i]) > 0 else 1:.1%}" for i in range(len(word_list))] #每个单词的正确率列表
    eg.msgbox("你做题时对这些单词分别的正确率:")
    for each in zip(word_list,True_list,range(len(word_list))):
        space = " " * word_with_space[each[2]]
        eg.msgbox(f"单词{each[0]}{space}正确率:{each[1]}")
    
注意:需要下载 easygui 模块,具体方法自己百度

制作不易,喜欢的话,就给个好评,评个分吧!

最后,祝大家新年快乐,寒假作业不被老师检查......
ps:寒假最后一天了,我马上又要被作业给封印住了   —— 更新放慢 —— 不会很慢的


评分

参与人数 4荣誉 +12 鱼币 +12 收起 理由
香蕉那个不拿拿 + 1 + 1 鱼C有你更精彩^_^
傻眼貓咪 + 5 + 5 感谢楼主无私奉献!
ckblt + 1 + 1 感谢楼主无私奉献!
小伤口 + 5 + 5 无条件支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-12 15:25:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-12 15:53:45 | 显示全部楼层
可以,厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-2-12 16:17:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-12 17:11:59 | 显示全部楼层
提个建议,就是在图形模式下,
你按关闭的话,他会给你说答错了。
希望能修改成对应的操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-13 15:34:34 From FishC Mobile | 显示全部楼层
我的寒假还有一个星期。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-13 17:48:08 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-14 14:42:04 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-14 14:49:27 | 显示全部楼层
新人前来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-23 17:05:02 | 显示全部楼层
@python爱好者. @ckblt
v4.5
添加了一些新单词
添加了时间
会显示你学习了多长时间
import easygui as eg
import random
import time 

def make_button(ranswer,mean_list): #生成选项
    global style
    number0 = mean_list.index(ranswer) #计算出正确翻译 ranswer 在翻译列表 mean_list 里的索引
    number1 = random.randint(0,len(mean_list) - 1) #生成出除 number0 之外的随机索引
    while number1 == number0:
        number1 = random.randint(0,len(mean_list) - 1)
    number2 = random.randint(0,len(mean_list) - 1) #生成除 number0 和 number1 之外的随机索引
    while number2 == number0 or number2 == number1:
        number2 = random.randint(0,len(mean_list) - 1)

    button = [mean_list[number0],mean_list[number1],mean_list[number2]] #生成答案与假答案的混合列表  
    button_list = random.sample(range(0,3),3) #生成将 button 列表的引用索引打乱后的顺序
    button_dict = {i[1] if style == 0 else button[int(i[0])]:button[int(i[0])] for i in zip([str(each) for each in button_list],["A","B","C"])} #合成随机提问选项

    return button_dict

def check_answer(I,first_know,i): #检查答案是否合法
    global answer
    global style
    question_style = 1 if I == 1 and first_know[i] == True else 0 #判断题目类型:0 是选择题, 1 是判断题
    alpha_list = ["A","B","C"] if question_style == 0 else ["A","B"] #判断题目前都有哪些序号
    if style == 0:
        while answer.isspace() or answer == "": #规范输入
            answer = input("请选择正确的一项:")
        while answer.strip().upper() not in alpha_list:
            answer = input("请选择正确的一项:")
    else:
        pass
    answer = answer.strip() #去掉选项两边可能存在的空格
    answer = answer.upper() #将用户输入的选项变成大写
    
def question(button_dict,guess,choose): #打印题目
    global style
    global answer
    if choose == 0: #打印选择意思题
        if style == 0:
            for each in button_dict.items():
                print(each[0],".",each[1])
        else:
            answer = eg.buttonbox(f"请选择单词 {guess} 的意思下方选项中的最贴切的一项:",choices = tuple([each[1] for each in button_dict.items()]))
    elif choose == 1:
        if style == 0:
            print(f"单词:{guess}")
            for each in zip(["A","B"],["会","不会"]):
                print(each[0],".",each[1])
        else:
            answer = eg.buttonbox(f"单词 {guess} 请节和你的自身情况给予回答:",choices = ("会","不会"))

def check_first_question(button_dict,answer,ranswer):
    print(button_dict,answer)
    global style
    if style == 0:
        if button_dict.get(answer) == ranswer: #如果猜对
            return True
        else:
            return False
    else:
        if button_dict.get(answer) == ranswer: #如果猜对
            return True
        else:
            return False

def over(word_list,now_heavy_list,heavy_list): #更新是否全部背完的列表
    finish = ["" for i in range(len(word_list))]
    for each in zip(now_heavy_list,heavy_list,range(len(word_list))):
        if each[0] >= each[1] or now_heav_list[each[2]] >= max_heav:
            finish[each[2]] = True
        else:
            finish[each[2]] = False
    return finish


word_list = ["nice","good","wow","cow","car","jar","mud","you","human","wine","school","life"
             ,"writer","wife","oil","ink","oil painting","chinese ink painting","unhappy"] #可自行添加
mean_list = ["棒的","好的","表示吃惊","奶牛","车","坛子","泥土","你","人类","红酒","学校","生活"
             ,"作家","妻子","油","墨水","油画","中国水墨画","不高兴的"] #可自行添加

if len(word_list) != len(mean_list): #如果两个列表长度不等
    print("错误:请重新设置列表 mean_list 和 word_list 它们的长度必须一致!")
if len(mean_list) < 3 or len(word_list) < 3: #如果列表的元素小于三个
    print("错误:列表里的元素不能少于 3 个!")
while len(mean_list) < 3: #合法输入
    mean_list = input("请输入 mean_list 列表的元素(用逗号分隔,不用加方括号):").split(sep = ",")
    if len(mean_list) < 3: #如果列表的元素小于三个
        print("错误:列表里的元素不能少于 3 个!")

while len(word_list) != len(mean_list) or len(word_list) < 3: #合法输入
    word_list = input("请输入 word_list 列表的元素(用逗号分隔,不用加方括号):").split(sep = ",")
    if len(word_list) != len(mean_list): #如果两个列表长度不等
        print("错误:请重新设置列表 mean_list 和 word_list 它们的长度必须一致!")
    if len(mean_list) < 3 or len(word_list) < 3: #如果列表的元素小于三个
        print("错误:列表里的元素不能少于 3 个!")
    

jian = 1 #设置每道题之间是否插入间隔#######################可自行更改

heavy = 2 #设置默认每个要背出多少才算背会#######################可自行更改
heavy_list = [heavy for i in range(len(word_list))] #默认每个要背出的次数列表

now_heavy = 0 #设置每个默认已背出的次数#######################可自行更改
now_heavy_list = [now_heavy for i in range(len(word_list))] #默认每个已背出的次数列表


max_heav = 3 #设置每个单词最多的背诵次数#######################可自行更改

now_heav = 0 #设置每个默认已背的次数#######################可自行更改
now_heav_list = [now_heav for i in range(len(word_list))] #默认每个已背的次数列表


first_know = ["" for i in range(len(word_list))] #设置第一次就会的单词


finish = over(word_list,now_heavy_list,heavy_list)

print("""0:IDLE
1:图形界面""")
style = int(input("请输入要用哪个模式:"))

time_start = time.time() #开始计时


if style == 0:
    I = 0
    while not all(finish): #如果没有结束背诵任务
        i_list = random.sample(range(len(word_list)),len(word_list)) #不重复的随机抽选要提问的单词的先后顺序
        for i in i_list:
            if finish[i] == False: #如果这个单词还没有背完
                ranswer = mean_list[i] #设置正确的翻译
                guess = word_list[i] #设置要提问的单词

                button_dict = make_button(ranswer,mean_list)


                #打印题目部分
                if I == 1 and first_know[i] == True:
                    question(button_dict,guess,choose = 1) #打印判断题
                else:
                    question(button_dict,guess,choose = 0) #打印选择意思题

            
            
                #向用户提问选项部分
                if I == 1 and first_know[i] == True: #如果是判断题
                    answer = input("请节和你的自身情况给予回答:")
                else: #如果是选择题
                    answer = input(f"请选择单词 {guess} 的意思在上方选项中的最贴切的一项:")
                    
                check_answer(I,first_know,i) #强制用户合法输入


                #判断部分
                now_heav_list[i] += 1
                if I == 1 and first_know[i] == True: #如果是判断题
                    if answer == "A":
                        question(button_dict,guess,choose = 0) #提选择题
                        
                        answer = input(f"请选择单词 {guess} 的意思在上方选项中的最贴切的一项:")
                        check_answer(I,first_know,i) #强制用户合法输入

                        if check_first_question(button_dict,answer,ranswer): #如果猜对
                            now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
                            print("答对了!")
                        else: #如果没猜对
                            print("答错了!")
                            print(f"记住了!单词 {guess} 的中文是 {ranswer} !")
                    elif answer == "B":
                        print(f"记住了!单词 {guess} 的中文是{ranswer}!")
                    
                else:
                    if check_first_question(button_dict,answer,ranswer): #如果猜对
                        now_heavy_list[i] += 1 #增加答对的次数
                        if I == 0:
                            first_know[i] = True #设置此单词第一次提问时就会了
                        print("答对了!")
                    else: #如果没猜对
                        print("答错了!")
                        print(f"记住了!单词 {guess} 的中文是 {ranswer} !")


                #遮挡部分
                if jian:
                    t.sleep(1.5)
                    for i in range(70): #打印间隔
                        print(f"{'|':^156}")
                    print()

            #更新 是否结束背诵任务
            finish = over(word_list,now_heavy_list,heavy_list)

            if all(finish): #如果都结束了,退出循环
                break
            
        I += 1 #更新目前提的遍数
        


 

    #计算尾部空格数量部分
    max_long_word_length = len(max(word_list,key = lambda x : len(x))) #计算出单词列表 word_list 中最长的一个单词的长度
    word_with_space = [(max_long_word_length * 3) - len(each) for each in word_list] #计算出每个单词后面跟着的空格数量列表# 3 是可更改的,最小为 2

    time_end = time.time()    #结束计时
    

    time_c= time_end - time_start   #运行所花时间
    time_c= round(time_c)#四舍五入

    #向用户输出结尾部分
    
    print("\n" * 3) # 3 是可更改的
    print(f"你这次学习时间 {time_c} 秒")
    print("你已背完了这些单词:{}!".format(",".join(word_list)))



    #输出每个单词的正确率部分
    True_list = [f"{now_heavy_list[i] / (now_heav_list[i]) if (now_heav_list[i]) > 0 else 1:.1%}" for i in range(len(word_list))] #每个单词的正确率列表
    print("你做题时对这些单词分别的正确率:")
    for each in zip(word_list,True_list,range(len(word_list))):
        space = " " * word_with_space[each[2]]
        print(f"单词{each[0]}{space}正确率:{each[1]}")
    

else:
    I = 0
    while not all(finish): #如果没有结束背诵任务
        i_list = random.sample(range(len(word_list)),len(word_list)) #不重复的随机抽选要提问的单词的先后顺序
        for i in i_list:
            if finish[i] == False: #如果这个单词还没有背完
                ranswer = mean_list[i] #设置正确的翻译
                guess = word_list[i] #设置要提问的单词

                button_dict = make_button(ranswer,mean_list)


                #打印题目部分
                if I == 1 and first_know[i] == True:
                    question(button_dict,guess,choose = 1) #打印判断题
                else:
                    question(button_dict,guess,choose = 0) #打印选择意思题


                #判断部分
                now_heav_list[i] += 1
                if I == 1 and first_know[i] == True: #如果是判断题
                    if answer == "会":
                        question(button_dict,guess,choose = 0) #提选择题

                        if check_first_question(button_dict,answer,ranswer): #如果猜对
                            now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
                            eg.msgbox("答对了")
                        else: #如果没猜对
                            eg.msgbox("答错了!")
                            eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")
                    elif answer == "不会":
                        eg.msgbox(f"记住了!单词 {guess} 的中文是{ranswer}!")
                    
                else:
                    if check_first_question(button_dict,answer,ranswer): #如果猜对
                        now_heavy_list[i] += 1 #增加答对的次数
                        if I == 0:
                            first_know[i] = True #设置此单词第一次提问时就会了
                        eg.msgbox("答对了!")
                    else: #如果没猜对
                        eg.msgbox("答错了!")
                        eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")



            #更新 是否结束背诵任务
            finish = over(word_list,now_heavy_list,heavy_list)

            if all(finish): #如果都结束了,退出循环
                break
            
        I += 1 #更新目前提的遍数
        


    #计算尾部空格数量部分
    max_long_word_length = len(max(word_list,key = lambda x : len(x))) #计算出单词列表 word_list 中最长的一个单词的长度
    word_with_space = [(max_long_word_length * 3) - len(each) for each in word_list] #计算出每个单词后面跟着的空格数量列表# 3 是可更改的,最小为 2

    time_end = time.time()    #结束计时
    

    time_c= time_end - time_start   #运行所花时间

    time_c= round(time_c)#四舍五入

    
    #向用户输出结尾部分
    eg.msgbox(f"你这次学习时间 {time_c} 秒")
    eg.msgbox("你已背完了这些单词:{}!".format(",".join(word_list)))


    #输出每个单词的正确率部分
    True_list = [f"{now_heavy_list[i] / (now_heav_list[i]) if (now_heav_list[i]) > 0 else 1:.1%}" for i in range(len(word_list))] #每个单词的正确率列表
    eg.msgbox("你做题时对这些单词分别的正确率:")
    for each in zip(word_list,True_list,range(len(word_list))):
        space = " " * word_with_space[each[2]]
        eg.msgbox(f"单词{each[0]}{space}正确率:{each[1]}")
    

#h

评分

参与人数 2荣誉 +1 鱼币 +6 收起 理由
ckblt + 1 + 1 鱼C有你更精彩^_^
python爱好者. + 5 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2022-2-23 17:08:14 | 显示全部楼层
shiyouroc 发表于 2022-2-23 17:05
@python爱好者. @ckblt
v4.5
添加了一些新单词

eee... 似乎没改动多少,我最近在调试一个 bug 中,调试完就可以出了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-23 17:08:51 | 显示全部楼层
python爱好者. 发表于 2022-2-23 17:08
eee... 似乎没改动多少,我最近在调试一个 bug 中,调试完就可以出了!

顺便按你的想法,加上记时功能!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-23 17:09:24 | 显示全部楼层
python爱好者. 发表于 2022-2-23 17:08
顺便按你的想法,加上记时功能!

当然,感谢你帮忙一起更新程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-6 13:19:53 From FishC Mobile | 显示全部楼层
oo
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-6 13:34:08 | 显示全部楼层
这个6 比单纯的记单词有趣
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-12 19:33:32 From FishC Mobile | 显示全部楼层
能贴张图么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-12 19:42:57 | 显示全部楼层

怎么了,有什么问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-12 21:11:42 | 显示全部楼层
牛啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-13 15:04:12 From FishC Mobile | 显示全部楼层
python爱好者. 发表于 2022-3-12 19:42
怎么了,有什么问题吗?

看看是什么样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-19 20:42:08 | 显示全部楼层
用pip install easygui
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 09:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表