上一篇:Python 自定义包和模块随机生成6位验证码(详解版)-CSDN博客
紧接上一篇博文,当我们熟练掌握如何自定义模块和包后,就要开始着手运用模块和包设计自己的小程序。这里我以“英语生词本”为例,来看我如何一步一步实现功能。
①Python的包是模块的集合,一个包可以放很多自定义模块,与模块一样用import...或from...import...导入使用。
②模块不是一个简单的.py文件,如要实现被导入调用模块,一开始就要有对模块进行全局规划的意识,把一些单一重复的普通函数、类、全局变量整合到一起。
- 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 = '请重新输入菜单序号:'
-
- # 功能实现 ************************************************************************
- 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 = '请重新输入菜单序号:'
-
- """
- 字典文件模块
- """
-
-
- # 用于模块导入使用通配符'*'
- __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
-
- """
- 英语生词本(文件版)
- """
-
-
- # 打印初始化菜单 ===================================================================
- 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