鱼C论坛

 找回密码
 立即注册
查看: 1985|回复: 9

[作品展示] 一个能帮助你背单词的程序 V2.0 不喜勿喷!

[复制链接]
发表于 2022-2-10 10:18:35 | 显示全部楼层 |阅读模式

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

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

x
上一个版本的传送门

此版本修复了旧版本个 Bug  :
1.在提问选项时,选项内容可能会重复的问题

更新了个功能:
1.可以自定义是否用字符串遮挡上一题
2.结尾会返回每个单词的正确率
3.可以自定义每个单词最多背的次数,注意,是 "背" ,不是 "背出" !

小缺陷:
1.还未丰富词库 —— 承认我懒
2.还不能分多批背诵,只能一次背完

废话不多说,上代码:
  1. import random

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


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

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

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


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

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


  12. finish = [True 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]
  13. finish = True if len(finish) == len(word_list) else False #只要结束的项与总共要结束的量相同,就代表全都结束了,就算结束了



  14. while not finish: #如果没有结束背诵任务
  15.     i_list = random.sample(range(len(word_list)),len(word_list)) #不重复的随机抽选要提问的单词的先后顺序
  16.     for i in i_list:
  17.         ranswer = mean_list[i] #设置正确的翻译
  18.         guess = word_list[i] #设置要提问的单词
  19.         


  20.         #计算随机索引 部分
  21.         number0 = mean_list.index(ranswer) #计算出正确翻译 ranswer 在翻译列表 mean_list 里的索引

  22.         number1 = random.randint(0,len(mean_list) - 1) #生成出除 number0 之外的随机索引
  23.         while number1 == number0:
  24.             number1 = random.randint(0,len(mean_list) - 1)

  25.         number2 = random.randint(0,len(mean_list) - 1) #生成除 number0 和 number1 之外的随机索引
  26.         while number2 == number0 or number2 == number1:
  27.             number2 = random.randint(0,len(mean_list) - 1)

  28.             

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



  35.         #打印题目部分
  36.         for each in button_dict.items(): #打印题目
  37.             print(each[0],".",each[1])

  38.         
  39.         
  40.         #向用户提问选项部分
  41.         answer = input(f"请选择单词 {guess} 的意思在上方选项中的最贴切的一项:")



  42.         #检查用户合法输入部分
  43.         while answer.isspace() or answer == "": #规范输入
  44.             answer = input("请选择正确的一项:")
  45.         answer = answer.strip() #去掉选项两边可能存在的空格
  46.         answer = answer.upper() #将用户输入的选项变成大写
  47.             


  48.         #判断部分
  49.         now_heav_list[i] += 1
  50.         if button_dict.get(answer) == ranswer: #如果猜对
  51.             now_heavy_list[i] += 1
  52.             print("答对了!")
  53.         else: #如果没猜对
  54.             print("答错了!")


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



  60.     #更新 是否结束背诵任务
  61.     finish = [True 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] #如果背出的次数够了或背的次数超出最大限制
  62.     finish = True if len(finish) == len(word_list) else False #只要结束的项与总共要结束的量相同,就代表全都结束了,就算结束了



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

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

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

复制代码



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

最后,祝大家新年快乐,寒假作业不被老师检查......

评分

参与人数 2荣誉 +3 鱼币 +3 收起 理由
小伤口 + 2 + 2 鱼C有你更精彩^_^
ckblt + 1 + 1 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-10 10:49:06 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-10 13:32:31 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-2-10 14:10:52 From FishC Mobile | 显示全部楼层
找bug达人上线。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-10 14:13:21 | 显示全部楼层

找到了吗,达人?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-10 14:14:52 From FishC Mobile | 显示全部楼层
暂时没有。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-10 14:15:23 | 显示全部楼层

eee...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-10 16:40:42 | 显示全部楼层
可以可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-12-25 19:03:21 | 显示全部楼层
写上去的都是你已经会背的单词,还不如直接把词典的链接输出

点评

我很赞同!: 1.0 不,我坚决不同意楼主的看法!: 5.0
我很赞同!: 1 不,我坚决不同意楼主的看法!: 5
目前正在更新的最新版早就加入了百度,有道,谷歌等词典,敬请期待  发表于 2023-12-25 19:28

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-18 14:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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