背单词是英语学习中最基础的一环,不少学生在背诵单词的过程中会整理自己的生词本,以不断拓展自己的词汇量。本实例要求编写生词本程序,该程序需具备以下功能。

(1)查看生词列表功能:输出生词本中全部的单词;若生词本中没有单词,则提示“生词本内容为空”。

(2)背单词功能:从生词列表中取出一个单词,要求用户输入相应的翻译,输入正确提示“太棒了”,输入错误提示“再想想”。

(3)添加新单词功能:用户分别输入新单词和翻译,输入完成后展示添加的新单词和翻译,并提示用户“单词添加成功”。若用户输入的单词已经存在于生词本中,提示“此单词已存在”。

(4)删除单词功能:展示生词列表,用户输入单词以选择要删除的生词,若输入的单词不存在提示“删除的单词不存在”,生词删除后提示“删除成功”。

(5)清空生词本功能:查询生词列表,若列表为空提示“生词本内容为空”,否则清空生词本中的全部单词,并输出提示信息“生词本已清空”。

(6)退出生词本功能:退出生词本。

实例分析

本实例的生词本主要用于保存多个单词及其翻译,其中的单词与翻译是互相对应的,且单词是不能重复的,因此这里可将每组单词与翻译视为一个字典,将生词本视为包含多个单词的集合。但集合中存储的元素必须是可哈希类型的,其中不能包含字典,这时需要将字典转换为字符串之后再添加到集合中。

生词本具有5个功能,分别是查看生词本、背单词、添加新单词、删除单词和清空生词本。其中背单词的功能相当于遍历集合元素的操作,添加新单词的功能相当于往集合中添加元素的操作,删除单词和清空生词本的功能相当于删除和清空集合元素的操作。

代码实现

words_book = set()
words_only_set = set()
print('=' * 20)
print('欢迎使用生词本')
print('1.查看生词本')
print('2.背单词')
print('3.添加新单词')
print('4.删除单词')
print('5.清空生词本')
print('6.退出生词本')
print('=' * 20)
while True:
    word_dict = {}
    fun_num = input('请输入功能编号:')
    if fun_num == '1':  # 查看生词本
        if len(words_book) == 0:
            print('生词本内容为空')
        else:
            print(words_book)
    elif fun_num == '2':  # 背单词
        if len(words_book) == 0:
            print('生词本内容为空')
        else:
            for random_words in words_book:
                w = random_words.split(':')
                in_words = input("请输入" + w[0] + '翻译' + ':\n')
                if in_words == w[1].strip():
                    print('太棒了')
                else:
                    print('再想想')
    elif fun_num == '3':  # 添加新单词
        new_words = input('请输入新单词:')
        # 检测单词是否重复
        if new_words in words_only_set:
            # 添加的单词重复
            print('此单词已存在')
        else:
            # 执行单词添加
            new_chinese = input('请输入单词翻译:')
            word_dict.update({new_words: new_chinese})
            # 转换成字符串存入set集合中
            dict_str = str(word_dict).replace('{', '').replace('}','').replace("'", '')                                                           
            words_book.add(dict_str)
            print('单词添加成功')
            dict_str = dict_str.replace(',', '')
            print(dict_str)
            words_only_set.add(new_words)
    elif fun_num == '4':  # 删除单词
        if len(words_book) == 0:
            print('生词本为空')
        else:
            temp_list = list(words_book)
            print(temp_list)
            del_wd = input("请输入要删除的单词")
            # 如果要删除的单词不在单词集合中
            if del_wd not in words_only_set:
                print('删除的单词不存在')
            else:
                words_only_set.discard(del_wd)
                for temp in temp_list:
                    if del_wd in temp:
                        words_book.remove(temp)
                    print('删除成功')
    elif fun_num == '5':  # 清空
        if len(words_book) == 0:
            print('生词本为空')
        else:
            words_only_set.clear()
            words_book.clear()
            print('生词本清空成功')
    elif fun_num == '6':  # 退出
        print('退出成功')
        break