鱼C论坛

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

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

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

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

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

x
上一个版本:传送门


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

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

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

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

  12.     button = [mean_list[number0],mean_list[number1],mean_list[number2]] #生成答案与假答案的混合列表  
  13.     button_list = random.sample(range(0,3),3) #生成将 button 列表的引用索引打乱后的顺序
  14.     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"])} #合成随机提问选项

  15.     return button_dict

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

  47. def check_first_question(button_dict,answer,ranswer):
  48.     print(button_dict,answer)
  49.     global style
  50.     if style == 0:
  51.         if button_dict.get(answer) == ranswer: #如果猜对
  52.             return True
  53.         else:
  54.             return False
  55.     else:
  56.         if button_dict.get(answer) == ranswer: #如果猜对
  57.             return True
  58.         else:
  59.             return False

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


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

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

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

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

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

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


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

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


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


  94. finish = over(word_list,now_heavy_list,heavy_list)

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


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

  106.                 button_dict = make_button(ranswer,mean_list)


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

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


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

  129.                         if check_first_question(button_dict,answer,ranswer): #如果猜对
  130.                             now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
  131.                             print("答对了!")
  132.                         else: #如果没猜对
  133.                             print("答错了!")
  134.                             print(f"记住了!单词 {guess} 的中文是 {ranswer} !")
  135.                     elif answer == "B":
  136.                         print(f"记住了!单词 {guess} 的中文是{ranswer}!")
  137.                     
  138.                 else:
  139.                     if check_first_question(button_dict,answer,ranswer): #如果猜对
  140.                         now_heavy_list[i] += 1 #增加答对的次数
  141.                         if I == 0:
  142.                             first_know[i] = True #设置此单词第一次提问时就会了
  143.                         print("答对了!")
  144.                     else: #如果没猜对
  145.                         print("答错了!")
  146.                         print(f"记住了!单词 {guess} 的中文是 {ranswer} !")


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

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

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


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

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

  165.     #输出每个单词的正确率部分
  166.     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))] #每个单词的正确率列表
  167.     print("你做题时对这些单词分别的正确率:")
  168.     for each in zip(word_list,True_list,range(len(word_list))):
  169.         space = " " * word_with_space[each[2]]
  170.         print(f"单词{each[0]}{space}正确率:{each[1]}")
  171.    

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

  180.                 button_dict = make_button(ranswer,mean_list)


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


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

  191.                         if check_first_question(button_dict,answer,ranswer): #如果猜对
  192.                             now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
  193.                             eg.msgbox("答对了")
  194.                         else: #如果没猜对
  195.                             eg.msgbox("答错了!")
  196.                             eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")
  197.                     elif answer == "不会":
  198.                         eg.msgbox(f"记住了!单词 {guess} 的中文是{ranswer}!")
  199.                     
  200.                 else:
  201.                     if check_first_question(button_dict,answer,ranswer): #如果猜对
  202.                         now_heavy_list[i] += 1 #增加答对的次数
  203.                         if I == 0:
  204.                             first_know[i] = True #设置此单词第一次提问时就会了
  205.                         eg.msgbox("答对了!")
  206.                     else: #如果没猜对
  207.                         eg.msgbox("答错了!")
  208.                         eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")



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

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


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

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

  221.     #输出每个单词的正确率部分
  222.     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))] #每个单词的正确率列表
  223.     eg.msgbox("你做题时对这些单词分别的正确率:")
  224.     for each in zip(word_list,True_list,range(len(word_list))):
  225.         space = " " * word_with_space[each[2]]
  226.         eg.msgbox(f"单词{each[0]}{space}正确率:{each[1]}")
  227.    



复制代码

注意:需要下载 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
添加了一些新单词
添加了时间
会显示你学习了多长时间
  1. import easygui as eg
  2. import random
  3. import time

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

  13.     button = [mean_list[number0],mean_list[number1],mean_list[number2]] #生成答案与假答案的混合列表  
  14.     button_list = random.sample(range(0,3),3) #生成将 button 列表的引用索引打乱后的顺序
  15.     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"])} #合成随机提问选项

  16.     return button_dict

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

  48. def check_first_question(button_dict,answer,ranswer):
  49.     print(button_dict,answer)
  50.     global style
  51.     if style == 0:
  52.         if button_dict.get(answer) == ranswer: #如果猜对
  53.             return True
  54.         else:
  55.             return False
  56.     else:
  57.         if button_dict.get(answer) == ranswer: #如果猜对
  58.             return True
  59.         else:
  60.             return False

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


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

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

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

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

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

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


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

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


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


  97. finish = over(word_list,now_heavy_list,heavy_list)

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

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


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

  110.                 button_dict = make_button(ranswer,mean_list)


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

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


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

  133.                         if check_first_question(button_dict,answer,ranswer): #如果猜对
  134.                             now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
  135.                             print("答对了!")
  136.                         else: #如果没猜对
  137.                             print("答错了!")
  138.                             print(f"记住了!单词 {guess} 的中文是 {ranswer} !")
  139.                     elif answer == "B":
  140.                         print(f"记住了!单词 {guess} 的中文是{ranswer}!")
  141.                     
  142.                 else:
  143.                     if check_first_question(button_dict,answer,ranswer): #如果猜对
  144.                         now_heavy_list[i] += 1 #增加答对的次数
  145.                         if I == 0:
  146.                             first_know[i] = True #设置此单词第一次提问时就会了
  147.                         print("答对了!")
  148.                     else: #如果没猜对
  149.                         print("答错了!")
  150.                         print(f"记住了!单词 {guess} 的中文是 {ranswer} !")


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

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

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




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

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

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

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



  176.     #输出每个单词的正确率部分
  177.     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))] #每个单词的正确率列表
  178.     print("你做题时对这些单词分别的正确率:")
  179.     for each in zip(word_list,True_list,range(len(word_list))):
  180.         space = " " * word_with_space[each[2]]
  181.         print(f"单词{each[0]}{space}正确率:{each[1]}")
  182.    

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

  191.                 button_dict = make_button(ranswer,mean_list)


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


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

  202.                         if check_first_question(button_dict,answer,ranswer): #如果猜对
  203.                             now_heavy_list[i] += (heavy_list[i] - now_heavy_list[i]) #直接将此单词设为会了
  204.                             eg.msgbox("答对了")
  205.                         else: #如果没猜对
  206.                             eg.msgbox("答错了!")
  207.                             eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")
  208.                     elif answer == "不会":
  209.                         eg.msgbox(f"记住了!单词 {guess} 的中文是{ranswer}!")
  210.                     
  211.                 else:
  212.                     if check_first_question(button_dict,answer,ranswer): #如果猜对
  213.                         now_heavy_list[i] += 1 #增加答对的次数
  214.                         if I == 0:
  215.                             first_know[i] = True #设置此单词第一次提问时就会了
  216.                         eg.msgbox("答对了!")
  217.                     else: #如果没猜对
  218.                         eg.msgbox("答错了!")
  219.                         eg.msgbox(f"记住了!单词 {guess} 的中文是 {ranswer} !")



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

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


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

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

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

  233.     time_c= round(time_c)#四舍五入

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


  238.     #输出每个单词的正确率部分
  239.     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))] #每个单词的正确率列表
  240.     eg.msgbox("你做题时对这些单词分别的正确率:")
  241.     for each in zip(word_list,True_list,range(len(word_list))):
  242.         space = " " * word_with_space[each[2]]
  243.         eg.msgbox(f"单词{each[0]}{space}正确率:{each[1]}")
  244.    

  245. #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-5-13 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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