本文主要是介绍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 += 1print(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 = 1break# 下一个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 = 0breakprint('-' * 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 = 1break# 全部正确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 = 1break# 错误elif t not in j:if not error_flag:print('错误内容: ', end='')error_flag = 1print(f'{t}', end=' ')# 退出两层循环if break_flag:break_flag = 0break# 打印内容补全elif error_flag:error_flag = 0print(f'\n完整答案: {j}')print("-" * 32) # 打印分割线# 退出两层循环if break_flag:break_flag = 0breakprint("-" * 32) # 打印分割线# 0.退出 -------------------------------------------------------------elif choice_mode == '0':breakinput_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_filedict_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 += 1print(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_filedict_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('修改单词') # 打印标题continueprint(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 += 1print(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:breakremove = 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_filedict_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 osif not os.path.exists(path_list):os.mkdir(path_list)# 新建文件 ---------------------------------------------------------------
def make_file(path):# 判断文件是否存在import osif not os.path.exists(path):file = open(file=path, mode='w')file.close()"""****************************** 功能类 ******************************"""
# 字典文件类 ==============================================================
class dict_file:def __init__(self):pass# 读取文件数据 ----------------------------------------------------@classmethoddef file_read(cls, dict, path, split):# 判断文件是否存在import osif 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# 写入文件数据 ---------------------------------------------------@classmethoddef 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_fileglobal english_dictenglish_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 = 0dict_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:breakprint('-' * 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 += 1print(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 = 1break# 下一个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 = 0breakprint('-' * 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 = 1break# 全部正确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 = 1break# 错误elif t not in j:if not error_flag:print('错误内容: ', end='')error_flag = 1print(f'{t}', end=' ')# 退出两层循环if break_flag:break_flag = 0break# 打印内容补全elif error_flag:error_flag = 0print(f'\n完整答案: {j}')print("-" * 32) # 打印分割线# 退出两层循环if break_flag:break_flag = 0breakprint("-" * 32) # 打印分割线# 0.退出 -------------------------------------------------------------elif choice_mode == '0':breakinput_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_filedict_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 += 1print(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_filedict_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('修改单词') # 打印标题continueprint(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 += 1print(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:breakremove = 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_filedict_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
这篇关于Python 自定义模块和包设计英语生词本(文件版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!