python爱好者. 发表于 2022-2-10 10:18:35

一个能帮助你背单词的程序 V2.0 不喜勿喷!

上一个版本的传送门

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

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

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

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

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


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

heavy = 2 #设置默认每个要背出多少才算背会#######################可自行更改
heavy_list = #默认每个要背出的次数列表

now_heavy = 0 #设置每个默认已背出的次数#######################可自行更改
now_heavy_list = #默认每个已背出的次数列表


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

now_heav = 0 #设置每个默认已背的次数#######################可自行更改
now_heav_list = #默认每个已背的次数列表


finish = >= each or now_heav_list] >= max_heav]
finish = True if len(finish) == len(word_list) else False #只要结束的项与总共要结束的量相同,就代表全都结束了,就算结束了



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


      #计算随机索引 部分
      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] #生成答案与假答案的混合列表
      
      button_list = random.sample(range(0,3),3) #生成将 button 列表的引用索引打乱后的顺序
      
      button_dict = {i:button)] for i in zip(,["A","B","C"])} #合成随机提问选项



      #打印题目部分
      for each in button_dict.items(): #打印题目
            print(each,".",each)

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



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


      #判断部分
      now_heav_list += 1
      if button_dict.get(answer) == ranswer: #如果猜对
            now_heavy_list += 1
            print("答对了!")
      else: #如果没猜对
            print("答错了!")


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



    #更新 是否结束背诵任务
    finish = >= each or now_heav_list] >= max_heav] #如果背出的次数够了或背的次数超出最大限制
    finish = True if len(finish) == len(word_list) else False #只要结束的项与总共要结束的量相同,就代表全都结束了,就算结束了



#计算尾部空格数量部分
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 = / now_heav_list:.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]
    print(f"单词{each}{space}正确率:{each}")




制作不易,喜欢的话,就给个好评,评个分吧!
{:10_257:} {:10_297:} {:10_281:} {:10_298:}
最后,祝大家新年快乐,寒假作业不被老师检查......{:10_297:}

python爱好者. 发表于 2022-2-10 10:49:06

@ckblt @shiyouroc

hornwong 发表于 2022-2-10 13:32:31

{:5_95:}

shiyouroc 发表于 2022-2-10 14:10:52

找bug达人上线。

python爱好者. 发表于 2022-2-10 14:13:21

shiyouroc 发表于 2022-2-10 14:10
找bug达人上线。

找到了吗,达人?{:10_256:}

shiyouroc 发表于 2022-2-10 14:14:52

暂时没有。

python爱好者. 发表于 2022-2-10 14:15:23

shiyouroc 发表于 2022-2-10 14:14
暂时没有。

eee...

小伤口 发表于 2022-2-10 16:40:42

可以可以{:5_109:}

stumblemodel 发表于 2023-12-25 19:03:21

{:10_249:}写上去的都是你已经会背的单词,还不如直接把词典的链接输出
页: [1]
查看完整版本: 一个能帮助你背单词的程序 V2.0 不喜勿喷!