白冥 发表于 2024-7-9 20:41:21

【python】简单的背单词程序

本帖最后由 白冥 于 2024-7-9 21:06 编辑

最近在学日语,因此做了一个简单的背单词程序,允许你写入单词表来背诵。单词对象,包括单词的拼写、含义、进度(初始为0)、是否已完成记忆(初始为False)、是否是难词(初始为False)以及尝试次数(初始为0)。如果填对拼写,则增加单词的记忆进度。如果进度达到100,标记为已完成。否则填错或者不填,减少单词的记忆进度。如果尝试次数达到30次,标记为难词。
这个程序会初始化一个空的单词列表,允许用户输入单词的拼写和含义,然后创建一个新的 Word 对象并添加到列表中,然后从单词列表中随机选择指定数量的单词,如果请求的单词数量大于列表中的单词数量,则返回列表中的所有单词。
程序执行时,会调用 recite_words 函数,并尝试记忆50个单词,这个函数首先创建一个 WordList 对象,并更新单词列表,然后,它随机选择指定数量的单词进行记忆。对于每个未完成的单词,程序会显示单词的含义,并要求用户输入单词的拼写。如果用户输入正确,单词的记忆进度会增加;如果输入错误,进度会减少,并且如果尝试次数过多,单词会被标记为难词,最后,所有被标记为难词的单词会被写入到 "hard_word_list.txt" 文件中。

static/image/hrline/5.gif
————————————

import random
class Word:
    def __init__(self, spelling, meaning):
      self.spelling = spelling
      self.meaning = meaning
      self.progress = 0
      self.haveCompleted = False
      self.isHardWord = False
      self.count = 0
    def addProgress(self):
      if self.progress < 100:
            self.progress += 1
      elif self.progress >= 100:
            self.haveCompleted = True
    def subProgress(self):
      if self.progress > 0:
            self.progress -=1
      self.count += 1
      if self.count >= 30:
            self.isHardWord =True
class WordList:
    def __init__(self):
      self._word_list = []
    def updata_word_list(self):
      print("Updata the word list now...")
      self._word_list.clear()
      while(True):
                spelling = input("Enter next word's spelling")
                if not spelling:
                  break
                meaning = input("Enter the word's meaning")
                word = Word(spelling,meaning)
                self._word_list.append(word)
    def select_random_word(self,count):
      return random.sample(self._word_list, min(count,len(self._word_list)))
def recite_words(count):
    recite_words_program = WordList()
    recite_words_program.updata_word_list()
    word_list=recite_words_program.select_random_word(count)
    if not word_list:
      raise Exception("You can't try to recite an empty word list!")
    hard_word_list = []
    while(True):
      if all(word.haveCompleted for word in word_list):
            break
      word = random.choice()
      print(word.meaning)
      if input("The word's spelling is...") == word.spelling:
            word.addProgress()
      else:
            word.subProgress()
      if word.isHardWord:
            hard_word_list.append(word.spelling)
    with open("hard_word_list.txt","a") as f:
      f.write("This is the hard words of the feedback:")
      i = 0
      for word in hard_word_list:
            f.write(f"{i}:{word}\n")
            i += 1
if __name__ == "__main__":
    recite_words(50)
————————————


凯诺斯 发表于 2024-7-9 20:56:58

看起来很实用的背单词程序惹,试试看效果如何{:6_165:}

糖醋鲤鱼 发表于 2024-7-9 20:59:38

哈哈哈,看起来这个好有趣的样子呢,改天可以试一下,刚好我最近也在学日语呢{:6_188:}

娱乐法师火布偶 发表于 2024-7-9 21:08:50

Python的背单词机真是很简洁了

Protoss 发表于 2024-7-9 22:03:49

如果是手机端应该会更受欢迎吧

li漠北 发表于 2024-7-9 22:45:48

会写程序的技能真的好加分,符合对理工男的任何想法

毛茸茸兽兽 发表于 2024-7-9 23:39:17

瑟瑟发抖ing(´×ω×`)想起了当初死记单词的时间哩,咱用的是不背单词,有些功能还类似的咧~

you9632587 发表于 2024-7-10 07:43:29

用程序来背单词怕是摸上电脑就开始不自觉干起别的了吧

ditto 发表于 2024-7-10 09:41:37

用这个背单词总感觉效率会高一些哈哈

圣卫幻梦 发表于 2024-7-10 10:12:20

挺有趣的,不过这类型的东西还得是便携端的好用一些

枫_Age 发表于 2024-7-10 10:46:52

如果我是高中生我肯定不屑一顾,但是大学生真的很需要这个,谢谢orz

maplez 发表于 2024-7-10 14:09:08

感觉过于专业了   可能对于普通人还是成品app的功能就足够了

95269527 发表于 2024-7-10 19:08:08

挺有意思的,感觉对编程新人会有所帮助

cdcai 发表于 2024-7-10 19:17:43

毕业之后完全静不下来学外语了{:6_167:}

Linkdahl 发表于 2024-7-10 19:30:34

好简短的python脚本,简短素程序员的浪漫惹,不过本可已经没有学习语言的动力了,还是只能鼓励一下lz惹

bigbigbig3 发表于 2024-7-10 21:04:28

背词也讲求科学方法额
好厉害的工具哈哈哈
可以顶过那些花里胡哨的软件了

zhuovboyan 发表于 2024-7-11 04:29:11

0-0 背单词程序嘛 仿佛回到了当年abandon的时代了~

danst110 发表于 2024-7-11 11:39:34

很厉害的工具 感觉很实用呢

ZHD 发表于 2024-7-17 21:28:58

大大很厉害啊,希望可以加一点鼓励之类的反馈更有动力了{:6_167:}

chouki 发表于 2024-7-26 21:07:19

膜拜大佬的自制程序{:6_166:}但我不想背单词...{:6_164:}
页: [1]
查看完整版本: 【python】简单的背单词程序