上一篇: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