功能需求
给定一个words.txt文档,里面存放单词及其释意,要求编写一个python程序,实现自动背刺功能:程序开始时,首先随机给用户一个单词和其释义,用户自行选择师是否记住该单词,如果选择记住的话,程序会将该单词标记为需要记忆,在接下来的操作中会继续出现这个单词,直到用户不需要记忆为止;如果用户选择不记忆该单词,程序自动将该单词移除(即不再进行该单词的记忆)。直到用户将所有单词标记为不需要记忆,程序打印出祝贺信息。
功能分析
1:首先将总体功能的各个模块氛围几个函数
2:主函数main()用于从文件中读取单词和翻译,并询问用户是否对该单词进行记忆标记
3:定义一个函数remember_words(),显示一个单词,获取用户对该单词的释义
4:定义一个函数read_words(),用于从文件中读取单词和翻译,并打乱它的顺序,更利于用户对单词的记忆
程序实现
# 导入random模块,该模块提供各种随机数生成函数
import random
# 定义一个函数,它的作用是让用户记忆一个单词并接受用户的翻译输入,对比是否正确
def remember_word(word, translation):
# 创建一个无限循环,直到用户输入的翻译与给定的翻译一致时跳出循环
while True:
# 通过input函数提示用户输入单词的翻译
# user_input = input(f"What is {word}? ({translation}): ")
user_input = input(f"what is {word}?(按p跳过该单词):")
# 如果用户输入的翻译与给定的翻译一致,则打印鼓励信息并跳出循环
if user_input == translation:
print("Good job! You remembered the word!")
break
# 如果用户输入的翻译与给定的翻译不一致,则打印类似的信息并让用户再次尝试
elif user_input == 'p':
break
else:
print(f"Close, but not quite. Try again!")
# 定义一个函数,用于从文件中读取单词和翻译,并打乱它们的顺序
def read_words():
# 使用with open语句打开"words.txt"文件,并以只读模式("r")读取内容
with open("words.txt", "r" ,encoding='utf-8') as f:
# 读取文件的每一行,去掉行尾的换行符(如果有的话),并将每一行分割成一个列表
words = [line.strip().split(": ") for line in f]
# 使用random模块的shuffle函数打乱单词和翻译的顺序,以便于记忆
random.shuffle(words) # 打乱单词顺序以便于记忆
# 返回打乱顺序后的单词和翻译列表
return words
# 定义主函数
def main():
# 从文件中读取单词和翻译,并将它们保存在变量words中
words = read_words()
# 当单词列表非空时,执行以下操作
while words:
# 从words列表中随机选择一个单词和它的翻译
word, translation = random.choice(words)
# 打印当前要记忆的单词和它的翻译
print(f"Current word: {word}, Translation: {translation}")
# 提示用户是否要记忆这个单词,并接受用户的输入
user_input = input("Do you want to remember this word? (yes/no): ")
# 如果用户输入的是“yes”
if user_input == "yes":
# 调用remember_word函数,让用户尝试记忆这个单词,并等待用户的反馈
remember_word(word, translation)
# 从words列表中移除这个单词,表示用户已经成功记忆了这个单词
if word in words:
words.remove(word) # 从列表中移除已经学会的单词
# 如果用户输入的不是“yes”
else:
# 打印一条消息,告诉用户下一个单词即将出现,并进入下一个循环
print("Okay, let's move on to the next word.")
# 当所有的单词都被学习后,打印一条祝贺信息
else:
print("Congratulations! You have learned all the words!")
# 如果当前文件被作为主程序直接运行,而不是被导入到其他文件中使用,那么执行以下操作:
if __name__ == "__main__":
# 调用main函数,开始背单词的游戏
main()