Python 自定义模块和包设计英语生词本(文件版)

上一篇:Python 自定义包和模块随机生成6位验证码(详解版)-CSDN博客

紧接上一篇博文,当我们熟练掌握如何自定义模块和包后,就要开始着手运用模块和包设计自己的小程序。这里我以“英语生词本”为例,来看我如何一步一步实现功能。

一、简述如何自定义模块和包

①Python的包是模块的集合,一个包可以放很多自定义模块,与模块一样用import...或from...import...导入使用。

②模块不是一个简单的.py文件,如要实现被导入调用模块,一开始就要有对模块进行全局规划的意识,把一些单一重复的普通函数、类、全局变量整合到一起。

二、小程序“英语生词本”设计

1、根据小程序“英语生词本”功能规划代码框架,代码如下:

input_info = '请输入菜单序号:'

# 功能实现  ************************************************************************
while True:

    # 菜单选择
    choice = input(input_info)
    input_info = '请输入菜单序号:'

    # 1.查看单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    if choice == '1':
       pass

    # 2.背默单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '2':
       pass

    # 3.新增单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '3':
        pass

    # 4.删除单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '4':
        pass

    # 5.修改单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '5':
        pass

    # 0.退出  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '0':
        break

    # 其他
    else:
        input_info = '请重新输入菜单序号:'

2、根据相应的功能逐个实现,代码如下:

# 功能实现  ************************************************************************
while True:
    init_menu()         # 打印初始化菜单
    make_file()         # 新建文件
    read_file_data()    # 读取目标文件数据

    # 菜单选择
    choice = input(input_info)
    input_info = '请输入菜单序号:'

    # 1.查看单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    if choice == '1':
        input_title('查看单词')     # 打印标题

        # 判断是否为空文件
        if english_dict == dict():
            print('哦豁!您还没新增单词呢!')
            continue

        # 打印单词
        count = 0   # 计数
        for i, j in english_dict.items():
            count += 1
            print(f'{count}. {i}\t\t\t{j}')

    # 2.背默单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '2':
        input_title('背默单词')     # 打印标题

        # 判断是否为空文件
        if english_dict == dict() or english_dict == '文件不存在':
            print('哦豁!您还没新增单词呢!')
            continue

        # 选择背默模式    -----------------------------------------------------------
        while True:
            choice_mode = input(f'1.单词背默\t2.中文背默\t0.退出\n'
                                f'{"-"*32}\n请选择模式序号输入:')

            # 1.单词背默模式  -------------------------------------------------------
            if choice_mode == '1':
                input_title('单词背默')     # 打印标题

                # 开始背默
                break_flag = 0      # 旗帜
                for i, j in english_dict.items():
                    while True:
                        english = input(f'请输入{j}的\n英文翻译(退出:q 下一个:n):')

                        # 回答正确
                        if english.strip(' ') == i:
                            print('回答正确,再接再厉')
                            break

                        # 退出
                        elif english.strip(' ') == 'q' or english.strip(' ') == 'Q':
                            break_flag = 1
                            break

                        # 下一个
                        elif english.strip(' ') == 'n' or english.strip(' ') == 'N':
                            break

                        # 错误
                        elif english.strip(' ') != '':
                            print(f'回答错误: {english}')
                            print(f'正确答案: {i}')

                        print('-' * 32)       # 打印分割线

                    # 退出两层循环
                    if break_flag:
                        break_flag = 0
                        break

                    print('-' * 32)         # 打印分割线

            # 2.翻译背默模式  -------------------------------------------------------
            elif choice_mode == '2':
                input_title('中文背默')        # 打印标题

                # 开始背默
                break_flag = 0      # 旗帜
                error_flag = 0      # 旗帜
                for i, j in english_dict.items():
                    while True:
                        chinese_list = []       # 输入内容容器
                        chinese = input(f'请输入 {i} 的\n中文翻译(退出:q 下一个:n):')

                        # 获取输入内容
                        for k in chinese.split(' '):
                            if k:
                                chinese_list.append(k)

                        # 判断输入内容是否为空
                        if not chinese_list:
                            print("-" * 32)  # 打印分割线
                            continue

                        # 下一个
                        elif chinese_list[0] in list('nN'):
                            break

                        # 退出
                        elif chinese_list[0] in list('qQ'):
                            break_flag = 1
                            break

                        # 全部正确
                        elif chinese_list == j:
                            print('全部回答正确')
                            break

                        # 部分正确
                        for t in chinese_list:
                            if t in j and t == chinese_list[-1]:
                                print('回答正确一部分')
                                print(f'完整答案: {j}')
                                break_flag = 1
                                break

                            # 错误
                            elif t not in j:
                                if not error_flag:
                                    print('错误内容: ', end='')
                                    error_flag = 1
                                print(f'{t}', end='  ')

                        # 退出两层循环
                        if break_flag:
                            break_flag = 0
                            break

                        # 打印内容补全
                        elif error_flag:
                            error_flag = 0
                            print(f'\n完整答案: {j}')

                        print("-" * 32)     # 打印分割线

                    # 退出两层循环
                    if break_flag:
                        break_flag = 0
                        break

                    print("-" * 32)         # 打印分割线

            # 0.退出  -------------------------------------------------------------
            elif choice_mode == '0':
                break

            input_title('背默单词')     # 打印标题

    # 3.新增单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '3':
        input_title('新增单词')     # 打印标题

        # 键盘输入单词和翻译
        while True:
            print('标准格式: instance  例子  实例')
            data = input('请输入单词及中文翻译(退出:q):')

            # 获取输入内容
            data_list = []  # 输入内容容器
            for i in data.split(' '):
                if i:
                    data_list.append(i)

            # 判断输入内容格式是否正确
            if len(data_list) == 0 or (len(data_list) == 1 and data_list[0] not in tuple('qQ')):
                print('-' * 32)
                continue

            # 退出
            elif data_list[0] in tuple('qQ'):
                break

            # 判断输入单词是否不在字典里
            elif data_list[0] not in english_dict.keys():
                english_dict[data_list[0]] = data_list[1::]     # 保存到字典
                print(f'已新增成功: {data_list[0]} {english_dict[data_list[0]]}')

            # 判断输入单词是否在字典里
            elif data_list[0] in english_dict.keys():
                print(f'该单词: {data_list[0]}  {english_dict[data_list[0]]}\n'
                      f'已存在,无法新增: {data_list[0]}  {data_list[1::]}')

            print('-'*32)       # 打印分隔线

            # 保存到文件里
            from 小功能包.词典文件 import dict_file
            dict_file.file_write(english_dict, file_path, split)

    # 4.删除单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '4':
        input_title('删除单词')  # 打印标题

        # 判断是否为空文件
        if english_dict == dict():
            print('哦豁!您还没新增单词呢!')
            continue

        # 删除单词
        while True:
            data = input('请输入要删除的[单词/中文](退出:q):')

            # 退出
            if data.strip(' ') == 'q' or data.strip(' ') == 'Q':
                break

            # 在字典查找与输入内容相关单词
            dict_keys = dict_find(data)

            # 判断是否找到数据
            if len(dict_keys) == 0:
                print(f'很遗憾,未找到与" {data} "相关内容')

            # 单个单词直接删除
            elif len(dict_keys) == 1:
                print(f'原单词: {dict_keys[0]}  {english_dict[dict_keys[0]]}')
                remove = input('请确认是否删除(y/n):')

                # 判断输入是否为空
                if not remove.strip(' '):
                    print('已放弃本次删除操作')

                # 确定删除
                elif remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                    print('已成功删除单词')
                    english_dict.pop(dict_keys[0])  # 删除

                # 其他
                else:
                    print('已放弃本次删除操作')

            # 多个单词选择删除
            elif len(dict_keys) > 1:
                while True:

                    # 打印查找到的数据
                    count = 0       # 计数
                    print(f'已为您找到以下单词:')
                    for i in dict_keys:
                        count += 1
                        print(f'{count}. {i}  {english_dict[i]}')

                    choice_change = input('请输入要删除的单词序号(退出:q):')

                    # 把序号转化为字符串存入列表
                    num_list = []
                    for i in range(1, len(dict_keys)+1):
                        num_list.append(str(i))

                    # 退出
                    if choice_change.strip(' ') in list('qQ'):
                        break

                    # 当输入正确序号时
                    elif choice_change.strip(' ') in num_list:
                        print(f'原单词: {dict_keys[int(choice_change)-1]}  '
                              f'{english_dict[dict_keys[int(choice_change)-1]]}')
                        remove = input(f'请确认是否要删除(y/n):')

                        # 确定删除
                        if remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                            print('已成功删除单词')
                            english_dict.pop(dict_keys[int(choice_change)-1])  # 删除

                        # 其他
                        else:
                            print('已放弃本次删除操作')

                        print('-' * 32)     # 打印分割线

                        break               # 跳出本次循环

            input_title('删除单词')        # 打印标题

            # 更新文件数据
            from 小功能包.词典文件 import dict_file
            dict_file.file_write(english_dict, file_path, split)

    # 5.修改单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '5':
        input_title('修改单词')     # 打印标题

        # 判断是否为空文件
        if english_dict == dict():
            print('哦豁!您还没新增单词呢!')
            continue

        # 修改单词
        while True:
            data = input('请输入要修改的[单词/中文](退出:q):')

            # 退出
            if data.strip(' ') == 'q' or data.strip(' ') == 'Q':
                break

            # 在字典查找与输入内容相关单词
            dict_keys = dict_find(data)

            # 未找到数据
            if len(dict_keys) == 0:
                print(f'很遗憾,未找到与" {data} "相关内容')

            # 单个单词直接修改
            elif len(dict_keys) == 1:
                print(f'原单词: {dict_keys[0]}  {english_dict[dict_keys[0]]}')

                # 输入新单词
                data_list = new_data_input(dict_keys)

                # 返回
                if not data_list:
                    input_title('修改单词')  # 打印标题
                    continue

                print(f'{dict_keys[0]} {english_dict[dict_keys[0]]} '
                      f'修改为 {data_list[0]} {data_list[1::]}')
                remove = input('请确认是否修改(y/n):')

                # 输入空字符
                if not remove.strip(' '):
                    print('已放弃本次修改操作')

                # 确定修改
                elif remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                    print('已成功修改单词')
                    english_dict.pop(dict_keys[0])                  # 删除
                    english_dict[data_list[0]] = data_list[1::]     # 添加

                # 其他
                else:
                    print('已放弃本次修改操作')

            # 多个单词选择修改
            elif len(dict_keys) > 1:
                while True:

                    # 打印查找到的数据
                    count = 0   # 计数
                    print(f'已为您找到以下单词:')
                    for i in dict_keys:
                        count += 1
                        print(f'{count}. {i}  {english_dict[i]}')

                    choice_change = input('请输入要修改的单词序号(退出:q):')

                    # 把序号转化为字符串存入列表
                    num_list = []
                    for i in range(1, len(dict_keys)+1):
                        num_list.append(str(i))

                    # 退出
                    if choice_change.strip(' ') in list('qQ'):
                        break

                    # 当输入正确序号时
                    elif choice_change.strip(' ') in num_list:
                        print(f'原单词: {dict_keys[int(choice_change)-1]}  '
                              f'{english_dict[dict_keys[int(choice_change)-1]]}')

                        # 输入新单词
                        data_list = new_data_input(dict_keys, dict_keys[int(choice_change)-1])

                        # 返回
                        if not data_list:
                            break

                        remove = input(f'{dict_keys[int(choice_change) - 1]} '
                                       f'{english_dict[dict_keys[int(choice_change)-1]]} '
                                       f'修改为 {data_list[0]} {data_list[1::]}'
                                       f'\n请确认是否要修改(y/n):')

                        # 确定修改
                        if remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                            print('已成功修改单词')
                            english_dict.pop(dict_keys[int(choice_change)-1])   # 删除
                            english_dict[data_list[0]] = data_list[1::]         # 添加

                        # 其他
                        else:
                            print('已放弃本次修改操作')

                        print('-' * 32)     # 打印分割线
                        break               # 跳出本次循环

            input_title('修改单词')       # 打印标题

            # 更新文件数据
            from 小功能包.词典文件 import dict_file
            dict_file.file_write(english_dict, file_path, split)

    # 0.退出  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '0':
        input_title('退出生词本', 11)        # 打印标题
        break

    # 其他
    else:
        input_info = '请重新输入菜单序号:'

3、自定义模块和包导入,实现代码交互,代码如下:

"""
    字典文件模块
"""


# 用于模块导入使用通配符'*'
__all__ = ['make_dir', 'make_file', 'dict_file']


"""****************************** 普通函数 ******************************"""
# 新建目录  ----------------------------------------------------------------
def make_dir(path):
    # 路径分割
    path_list = ''
    for i in path.split('\\')[:-1:]:
        path_list += i + '\\'

    # 新建目录
    import os
    if not os.path.exists(path_list):
        os.mkdir(path_list)


# 新建文件  ---------------------------------------------------------------
def make_file(path):
    # 判断文件是否存在
    import os
    if not os.path.exists(path):
        file = open(file=path, mode='w')
        file.close()

"""****************************** 功能类 ******************************"""
# 字典文件类 ==============================================================
class dict_file:

    def __init__(self):
        pass

    # 读取文件数据    ----------------------------------------------------
    @classmethod
    def file_read(cls, dict, path, split):
        # 判断文件是否存在
        import os
        if not os.path.exists(path):
            return '文件不存在'

        # 读取文件数据
        file = open(file=path, mode='r', encoding='utf-8')
        data_list = file.readlines()
        file.close()
        # 判断文件是否为空
        if data_list == dict:
            return dict
        # 分割获取需要的数据
        for i in data_list:
            split_list = i.strip('\n').split(split)
            dict[split_list[0]] = split_list[1::]
        return dict

    # 写入文件数据    ---------------------------------------------------
    @classmethod
    def file_write(cls, dict, path, split):
        make_dir(path)      # 创建目录
        # make_file(path)     # 创建文件

        # 数据写入文件
        file = open(file=path, mode='w', encoding='utf-8')
        for i, j in dict.items():
            file.write(f'{i}')
            for k in j:
                file.write(f'{split}{k}')
            file.write('\n')
        file.close()


"""****************************** 代码测试 ******************************"""
# 代码测试  ****************************************************************
if __name__ == '__main__':
    print(dict_file.file_read(dict(), '.\\..\\123\\456.txt', '(*)'))
    dict_file.file_write({'present': ['现在', '礼物']}, '.\\..\\111\\222.txt', '(*)')
else:
    pass

4、所有功能整合完成,代码如下:

"""
    英语生词本(文件版)

"""


# 打印初始化菜单   ===================================================================
def init_menu():
    print(f'{"="*12}英语生词本{"="*12}\n'
          f'1.查看单词\t2.背默单词\t'
          f'3.新增单词\n4.删除单词\t'
          f'5.修改单词\t0.退出\n{"-"*32}')


# 打印标题  =========================================================================
def input_title(str, fill=12):
    print(f'{"*"*fill} {str} {"*"*fill}')


# 创建文件  ========================================================================
def make_file():
    from 小功能包 import 词典文件
    词典文件.make_dir(file_path)       # 创建目录
    词典文件.make_file(file_path)      # 创建文件


# 读取目标文件数据  ==================================================================
def read_file_data():
    from 小功能包.词典文件 import dict_file
    global english_dict
    english_dict = dict_file.file_read(dict=dict(), path=file_path, split=split)


# 数据查找  ========================================================================
def dict_find(find_str):
    # 查找与输入内容相关单词
    dict_keys = []  # 字典键容器
    keyword = []    # 关键字
    # 分离查找关键字
    for i in find_str.strip(' ').split(' '):
        if i:
            keyword.append(i)
    # 查找关键字
    for i, j in english_dict.items():
        only_flag = 1               # 只执行一次
        for k in keyword:
            if i == k or k in j:
                if only_flag:       # 只执行一次
                    only_flag = 0
                    dict_keys.append(i)

    print('-' * 32)  # 打印分割线
    return dict_keys


# 新单词输入 ========================================================================
def new_data_input(dict_keys, str=None):
    # 剔除单词
    new_keys = []
    if str:
        new_keys.extend(dict_keys)
        new_keys.remove(str)
    # 新单词输入
    if dict_keys:
        while True:
            data_list = []      # 输入内容容器
            new_data = input('请输入新单词及中文翻译(退出:q):')
            # 获取输入内容
            for i in new_data.split(' '):
                if i:
                    data_list.append(i)
            # 判断输入内容格式是否正确
            if len(data_list) == 0 or (len(data_list) == 1 and data_list[0] not in tuple('qQ')):
                print('标准格式: instance  例子  实例')
            # 退出
            elif data_list[0] in tuple('qQ'):
                return []
            # 判断单词是否存在
            elif data_list[0] in english_dict.keys() and data_list[0] not in dict_keys:
                print(f'该单词: {data_list[0]}  {english_dict[data_list[0]]}\n'
                      f'已存在,无法命名为: {data_list[0]}')
            elif data_list[0] in new_keys and str:
                print(f'该单词: {data_list[0]}  {english_dict[data_list[0]]}\n'
                      f'已存在,无法命名为: {data_list[0]}')
            else:
                break
            print('-' * 32)     # 打印分割线
        return data_list


# 全局变量  ========================================================================
english_dict = dict()                       # 用于暂存英语生词字典
file_path = '.\\..\\English\\data.txt'      # 文件保存路径
split = '(*)'                               # 数据分割符号
input_info = '请输入菜单序号:'


# 功能实现  ************************************************************************
while True:
    init_menu()         # 打印初始化菜单
    make_file()         # 新建文件
    read_file_data()    # 读取目标文件数据

    # 菜单选择
    choice = input(input_info)
    input_info = '请输入菜单序号:'

    # 1.查看单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    if choice == '1':
        input_title('查看单词')     # 打印标题

        # 判断是否为空文件
        if english_dict == dict():
            print('哦豁!您还没新增单词呢!')
            continue

        # 打印单词
        count = 0   # 计数
        for i, j in english_dict.items():
            count += 1
            print(f'{count}. {i}\t\t\t{j}')

    # 2.背默单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '2':
        input_title('背默单词')     # 打印标题

        # 判断是否为空文件
        if english_dict == dict() or english_dict == '文件不存在':
            print('哦豁!您还没新增单词呢!')
            continue

        # 选择背默模式    -----------------------------------------------------------
        while True:
            choice_mode = input(f'1.单词背默\t2.中文背默\t0.退出\n'
                                f'{"-"*32}\n请选择模式序号输入:')

            # 1.单词背默模式  -------------------------------------------------------
            if choice_mode == '1':
                input_title('单词背默')     # 打印标题

                # 开始背默
                break_flag = 0      # 旗帜
                for i, j in english_dict.items():
                    while True:
                        english = input(f'请输入{j}的\n英文翻译(退出:q 下一个:n):')

                        # 回答正确
                        if english.strip(' ') == i:
                            print('回答正确,再接再厉')
                            break

                        # 退出
                        elif english.strip(' ') == 'q' or english.strip(' ') == 'Q':
                            break_flag = 1
                            break

                        # 下一个
                        elif english.strip(' ') == 'n' or english.strip(' ') == 'N':
                            break

                        # 错误
                        elif english.strip(' ') != '':
                            print(f'回答错误: {english}')
                            print(f'正确答案: {i}')

                        print('-' * 32)       # 打印分割线

                    # 退出两层循环
                    if break_flag:
                        break_flag = 0
                        break

                    print('-' * 32)         # 打印分割线

            # 2.翻译背默模式  -------------------------------------------------------
            elif choice_mode == '2':
                input_title('中文背默')        # 打印标题

                # 开始背默
                break_flag = 0      # 旗帜
                error_flag = 0      # 旗帜
                for i, j in english_dict.items():
                    while True:
                        chinese_list = []       # 输入内容容器
                        chinese = input(f'请输入 {i} 的\n中文翻译(退出:q 下一个:n):')

                        # 获取输入内容
                        for k in chinese.split(' '):
                            if k:
                                chinese_list.append(k)

                        # 判断输入内容是否为空
                        if not chinese_list:
                            print("-" * 32)  # 打印分割线
                            continue

                        # 下一个
                        elif chinese_list[0] in list('nN'):
                            break

                        # 退出
                        elif chinese_list[0] in list('qQ'):
                            break_flag = 1
                            break

                        # 全部正确
                        elif chinese_list == j:
                            print('全部回答正确')
                            break

                        # 部分正确
                        for t in chinese_list:
                            if t in j and t == chinese_list[-1]:
                                print('回答正确一部分')
                                print(f'完整答案: {j}')
                                break_flag = 1
                                break

                            # 错误
                            elif t not in j:
                                if not error_flag:
                                    print('错误内容: ', end='')
                                    error_flag = 1
                                print(f'{t}', end='  ')

                        # 退出两层循环
                        if break_flag:
                            break_flag = 0
                            break

                        # 打印内容补全
                        elif error_flag:
                            error_flag = 0
                            print(f'\n完整答案: {j}')

                        print("-" * 32)     # 打印分割线

                    # 退出两层循环
                    if break_flag:
                        break_flag = 0
                        break

                    print("-" * 32)         # 打印分割线

            # 0.退出  -------------------------------------------------------------
            elif choice_mode == '0':
                break

            input_title('背默单词')     # 打印标题

    # 3.新增单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '3':
        input_title('新增单词')     # 打印标题

        # 键盘输入单词和翻译
        while True:
            print('标准格式: instance  例子  实例')
            data = input('请输入单词及中文翻译(退出:q):')

            # 获取输入内容
            data_list = []  # 输入内容容器
            for i in data.split(' '):
                if i:
                    data_list.append(i)

            # 判断输入内容格式是否正确
            if len(data_list) == 0 or (len(data_list) == 1 and data_list[0] not in tuple('qQ')):
                print('-' * 32)
                continue

            # 退出
            elif data_list[0] in tuple('qQ'):
                break

            # 判断输入单词是否不在字典里
            elif data_list[0] not in english_dict.keys():
                english_dict[data_list[0]] = data_list[1::]     # 保存到字典
                print(f'已新增成功: {data_list[0]} {english_dict[data_list[0]]}')

            # 判断输入单词是否在字典里
            elif data_list[0] in english_dict.keys():
                print(f'该单词: {data_list[0]}  {english_dict[data_list[0]]}\n'
                      f'已存在,无法新增: {data_list[0]}  {data_list[1::]}')

            print('-'*32)       # 打印分隔线

            # 保存到文件里
            from 小功能包.词典文件 import dict_file
            dict_file.file_write(english_dict, file_path, split)

    # 4.删除单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '4':
        input_title('删除单词')  # 打印标题

        # 判断是否为空文件
        if english_dict == dict():
            print('哦豁!您还没新增单词呢!')
            continue

        # 删除单词
        while True:
            data = input('请输入要删除的[单词/中文](退出:q):')

            # 退出
            if data.strip(' ') == 'q' or data.strip(' ') == 'Q':
                break

            # 在字典查找与输入内容相关单词
            dict_keys = dict_find(data)

            # 判断是否找到数据
            if len(dict_keys) == 0:
                print(f'很遗憾,未找到与" {data} "相关内容')

            # 单个单词直接删除
            elif len(dict_keys) == 1:
                print(f'原单词: {dict_keys[0]}  {english_dict[dict_keys[0]]}')
                remove = input('请确认是否删除(y/n):')

                # 判断输入是否为空
                if not remove.strip(' '):
                    print('已放弃本次删除操作')

                # 确定删除
                elif remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                    print('已成功删除单词')
                    english_dict.pop(dict_keys[0])  # 删除

                # 其他
                else:
                    print('已放弃本次删除操作')

            # 多个单词选择删除
            elif len(dict_keys) > 1:
                while True:

                    # 打印查找到的数据
                    count = 0       # 计数
                    print(f'已为您找到以下单词:')
                    for i in dict_keys:
                        count += 1
                        print(f'{count}. {i}  {english_dict[i]}')

                    choice_change = input('请输入要删除的单词序号(退出:q):')

                    # 把序号转化为字符串存入列表
                    num_list = []
                    for i in range(1, len(dict_keys)+1):
                        num_list.append(str(i))

                    # 退出
                    if choice_change.strip(' ') in list('qQ'):
                        break

                    # 当输入正确序号时
                    elif choice_change.strip(' ') in num_list:
                        print(f'原单词: {dict_keys[int(choice_change)-1]}  '
                              f'{english_dict[dict_keys[int(choice_change)-1]]}')
                        remove = input(f'请确认是否要删除(y/n):')

                        # 确定删除
                        if remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                            print('已成功删除单词')
                            english_dict.pop(dict_keys[int(choice_change)-1])  # 删除

                        # 其他
                        else:
                            print('已放弃本次删除操作')

                        print('-' * 32)     # 打印分割线

                        break               # 跳出本次循环

            input_title('删除单词')        # 打印标题

            # 更新文件数据
            from 小功能包.词典文件 import dict_file
            dict_file.file_write(english_dict, file_path, split)

    # 5.修改单词    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '5':
        input_title('修改单词')     # 打印标题

        # 判断是否为空文件
        if english_dict == dict():
            print('哦豁!您还没新增单词呢!')
            continue

        # 修改单词
        while True:
            data = input('请输入要修改的[单词/中文](退出:q):')

            # 退出
            if data.strip(' ') == 'q' or data.strip(' ') == 'Q':
                break

            # 在字典查找与输入内容相关单词
            dict_keys = dict_find(data)

            # 未找到数据
            if len(dict_keys) == 0:
                print(f'很遗憾,未找到与" {data} "相关内容')

            # 单个单词直接修改
            elif len(dict_keys) == 1:
                print(f'原单词: {dict_keys[0]}  {english_dict[dict_keys[0]]}')

                # 输入新单词
                data_list = new_data_input(dict_keys)

                # 返回
                if not data_list:
                    input_title('修改单词')  # 打印标题
                    continue

                print(f'{dict_keys[0]} {english_dict[dict_keys[0]]} '
                      f'修改为 {data_list[0]} {data_list[1::]}')
                remove = input('请确认是否修改(y/n):')

                # 输入空字符
                if not remove.strip(' '):
                    print('已放弃本次修改操作')

                # 确定修改
                elif remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                    print('已成功修改单词')
                    english_dict.pop(dict_keys[0])                  # 删除
                    english_dict[data_list[0]] = data_list[1::]     # 添加

                # 其他
                else:
                    print('已放弃本次修改操作')

            # 多个单词选择修改
            elif len(dict_keys) > 1:
                while True:

                    # 打印查找到的数据
                    count = 0   # 计数
                    print(f'已为您找到以下单词:')
                    for i in dict_keys:
                        count += 1
                        print(f'{count}. {i}  {english_dict[i]}')

                    choice_change = input('请输入要修改的单词序号(退出:q):')

                    # 把序号转化为字符串存入列表
                    num_list = []
                    for i in range(1, len(dict_keys)+1):
                        num_list.append(str(i))

                    # 退出
                    if choice_change.strip(' ') in list('qQ'):
                        break

                    # 当输入正确序号时
                    elif choice_change.strip(' ') in num_list:
                        print(f'原单词: {dict_keys[int(choice_change)-1]}  '
                              f'{english_dict[dict_keys[int(choice_change)-1]]}')

                        # 输入新单词
                        data_list = new_data_input(dict_keys, dict_keys[int(choice_change)-1])

                        # 返回
                        if not data_list:
                            break

                        remove = input(f'{dict_keys[int(choice_change) - 1]} '
                                       f'{english_dict[dict_keys[int(choice_change)-1]]} '
                                       f'修改为 {data_list[0]} {data_list[1::]}'
                                       f'\n请确认是否要修改(y/n):')

                        # 确定修改
                        if remove.strip(' ') == 'y' or remove.strip(' ') == 'Y':
                            print('已成功修改单词')
                            english_dict.pop(dict_keys[int(choice_change)-1])   # 删除
                            english_dict[data_list[0]] = data_list[1::]         # 添加

                        # 其他
                        else:
                            print('已放弃本次修改操作')

                        print('-' * 32)     # 打印分割线
                        break               # 跳出本次循环

            input_title('修改单词')       # 打印标题

            # 更新文件数据
            from 小功能包.词典文件 import dict_file
            dict_file.file_write(english_dict, file_path, split)

    # 0.退出  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    elif choice == '0':
        input_title('退出生词本', 11)        # 打印标题
        break

    # 其他
    else:
        input_info = '请重新输入菜单序号:'

运行结果:

============英语生词本============
1.查看单词	2.背默单词	3.新增单词
4.删除单词	5.修改单词	0.退出
--------------------------------
请输入菜单序号:1
************ 查看单词 ************
哦豁!您还没新增单词呢!
============英语生词本============
1.查看单词	2.背默单词	3.新增单词
4.删除单词	5.修改单词	0.退出
--------------------------------
请输入菜单序号:3
************ 新增单词 ************
标准格式: instance  例子  实例
请输入单词及中文翻译(退出:q):title 题目 标题
已新增成功: title ['题目', '标题']
--------------------------------
标准格式: instance  例子  实例
请输入单词及中文翻译(退出:q):turtle  海龟
已新增成功: turtle ['海龟']
--------------------------------
标准格式: instance  例子  实例
请输入单词及中文翻译(退出:q):q
============英语生词本============
1.查看单词	2.背默单词	3.新增单词
4.删除单词	5.修改单词	0.退出
--------------------------------
请输入菜单序号:1
************ 查看单词 ************
1. title			['题目', '标题']
2. turtle			['海龟']

作者:周华

创作日期:2023/10/14

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值