查找首字母与Python相关的的英文词汇的小程序的进一步完善
本人是Python学习爱好者,菜鸟。昨天编了一个针对Python相关的英文词汇的单纯查询的小程序,后来在完善字典的时候,突然感觉不如再设计一个添加的模块功能,既然有添加了,也应该有删除。于是开始动手实践,编程最大的收获应该是反复调试程序和修正思路的过程中所学到的知识。话不多说,我把源程序代码分享一下:
编程思路如下:
-
利用首字母(26个英文字母)查找相关的Python英文词汇。比方说以a开头的,有“【‘appearance外表’, ‘assert/assertion异常’, ‘add添加’, ‘args/argument参数’, ‘attribute/attr属性’】”。
-
生成一个字典,以首字母为键(首字母小写),以词汇列表为值。
-
定义根据首字母查询词汇的函数。
-
定义添加词汇条目的函数。
-
定义删除指定词汇条目的函数。
-
设计主界面
源码如下:
#_*_coding:utf-8_*_ # 作者 :liuxiaowei # 创建时间 :3/6/22 4:20 PM # 文件 :查询添加.py # IDE :PyCharm # 创立英文词汇字典 Python_dict = {'a':['appearance外表', 'assert/assertion异常',' add添加', 'args/argument参数', 'attribute/attr属性'], 'b':['==byte==字节、位组、位元组', 'bool布尔类型', 'bug故障(虫子)', 'break突破/跳出'], 'c':['cmd/command命令', 'close关闭', 'column列', 'char字符类型', 'class类', 'create创建', 'continue继续', 'case情形',\ 'capitalize用大写字母或印刷', 'copy复制', 'clear清除', 'coding编码', 'character字符', 'count计数', 'comma引号'], 'd':['demo演示', 'division除法', 'downloads下载', 'define定义', 'decode解码', 'depth深度', 'default默认', 'dict字典',\ 'difference差数', 'discord丢弃', 'del/delete删除', 'data数据'], 'e':['exception异常', 'editor编辑', 'exit退出', 'extends延长,推广,继承', 'encode编码', 'even偶数', 'execute执行',\ 'expression表达式', 'extend扩展', 'error错误', 'end结果'], 'f':['finally最后', 'float浮点型', 'factorial阶乘的,因子', 'find查找', 'flush冲刷', 'function方法/函数', 'format格式化',\ 'file文件'], 'g':['global全局变量', 'group组'], 'h':['height高度'], 'i':['int整型', 'interpret解释', 'interpreter解释器', 'instance实例,情况', 'install安装', 'indentation缩进',\ 'ignore case或略大小写', 'inside内部', 'info信息', 'infinite无穷', 'import导入', 'item项', 'intersection相交/交叉',\ 'insert插入', 'input输入', 'invalid无效', 'identifier名称/标识符', 'iterable可迭代对象', 'index索引'], 'j':[''], 'k':['kwargs关键字参数', 'key键'], 'l':['local局部作用域', 'long长整型', '==login==登录', 'list列表', 'lower小写', 'less小于'], 'm':['main主要的', 'match匹配', 'missing丢失', 'module模块', 'mapping映射', 'max最大', 'min最小'], 'n':[''], 'o':['outside外部', 'object对象'], 'p':['private私有的', 'public公共的/公用的', 'perimeter周长', 'params参数', 'power幂', 'positional位置的', 'prompt提示',\ 'pop取出/弹出', 'path路径', 'project项目', 'print打印输出'], 'q':['quit退出', 'quotation引用'], 'r':['==rename==重命名', 'result结果', 'row行', 'random随机的', 'run运行/跑', 'reset重新设置', 'radius半径', 'regular规则',\ 'recursion递归', 'required必须', 'range范围', 'remove移除', 'reverse反向', 'replace替换'], 's':['scripts脚本', 'self自身', 'search查找', 'salary薪水', 'switch判断语句', 'string字符串类型', 'successful成功', 'search查询',\ 'square平方', 'system系统', 'step步长', 'sep/separate分隔', 'seq/sequence序列', 'swap互换', 'subset子集', 'sub附属',\ 'superset父集/超集', 'symmetric对称', 'set集合', 'setting设置', 'sort排序', 'strip去除', 'syntax语法', 'start开始'], 't':['try尝试', 'type类型', 'test测试', 'True真', 'tuple元组', 'title标题'], 'u':['unexpected不期望的', 'unicode万国码/统一字符标准', 'union联合', 'unsupported不支持的', 'update更新', 'upgrade升级','upper上面'], 'v':['==variables==变量', 'version版本', 'void空的/没有返回值的', 'value值', 'versus/vs.对抗/相对的'], 'w':['window窗口', 'width宽度', 'weight重量'], 'x':[''], 'y':['yield生产/生成'], 'z':['zip解压/拉链']} # 导入模块,为了生成一个csv格式文件,然后便于后续操作 import csv # 定义一个查找函数 def find_Word(letter): with open('python_dict.csv', mode='r') as fr: reader = csv.reader(fr, delimiter = ',') for row in reader: if row[0] == letter: print(f'您要查找的{letter}相关词汇如下:'+'\n',row[1]) break else: print('No found!') fr.close() # 定义一个添加词汇的函数 def add_Word(letter, words): dict_words1 = final_csv() # 在字典内遍历所查找的词条首字母 for key in dict_words1.keys(): if letter == key: dict_words1[letter].append(words) # 调用修改后的字典生成csv文件的函数 with open('python_dict.csv', mode = 'w', newline='') as ft: writer = csv.writer(ft, delimiter = ',') for key in dict_words1.keys(): writer.writerow([key, dict_words1[key]]) print(f'您已成功添加{words}词条') ft.close() # 定义一个删除条目函数 def del_Word(letter, words): # 把现有的csv文件导出到一个临时的字典 dict_words1 = final_csv() # 在字典内遍历所查找的词条首字母 for key in dict_words1.keys(): if letter == key: dict_words1[letter].remove(words) # 调用修改后的字典生成csv文件的函数 with open('python_dict.csv', mode = 'w', newline='') as fd: writer = csv.writer(fd, delimiter = ',') for key in dict_words1.keys(): writer.writerow([key, dict_words1[key]]) print(f'您已成功删除{words}词条') fd.close() # 定义一个输入首字母函数 def input_letter(): try: letter1 = input('Please enter an initial letter of the word that you want to find:').lower() return letter1 except: print('请核实输入内容!') # 定义一个添加词条的输入函数 def input_words(): try: words = input('Please enter the words to be added: ') return words except: print('请核实输入内容!') # 定义一个删除词条的输入函数 def input_words(): try: words = input('Please enter the words to be deleted: ') return words except: print('请核实输入内容!') # 定义一个询问函数 def ask_question(): question = input('Do you want to quit?(q)').lower() if question == 'q' or question == 'quit': return False # 定义一个主函数 def main(): print('\n') print(' Python相关英文词汇(查询-添加-删除)程序') print('-'*40) print(' 1. 查 询\n 2. 添 加\n 3. 删 除\n 4. 退 出') print('-'*40) # 定义一个操作函数operation def operation(): main() choice = int(input('请输入选项:(1,2,3,4)')) done = True while done: if choice == 1: letter1 = input_letter() find_Word(letter1) # 调用询问函数,是否退出当前操作 done = ask_question() elif choice == 2: letter1 = input_letter() words1 = input_words() add_Word(letter1, words1) # 调用询问函数,是否退出当前操作 done = ask_question() elif choice == 3: letter1 = input_letter() words1 = input_words() del_Word(letter1, words1) # 调用询问函数,是否退出当前操作 done = ask_question() elif choice == 4: break # 定义一个最后的整理函数 def final_csv(): py_dict = {} with open('python_dict.csv', mode='r') as f: reader = csv.reader(f, delimiter=',') for row in reader: # 把读出来的csv文件内容转成列表 row_lst = row[1].strip('[]').replace('\'', '').split(',') # 临时创建一个空列表,添加去掉空格的内容 row1 = [] for i in row_lst: # 去掉列表中内容的前空格 row1.append(i.strip(' ')) py_dict[row[0]] = row1 f.close() with open('python_dict.csv', mode='w') as fw: writer = csv.writer(fw, delimiter=',') for key in py_dict.keys(): writer.writerow([key, py_dict[key]]) return py_dict fw.close() # 启动程序 if __name__ == '__main__': operation() final_csv()
效果如下图:
§ 主界面:
§ 查询功能
§ 添加功能
§ 删除功能
§ 退出功能
总 结
利用字典生成的csv文件,如果感兴趣的可以导出电子表格文件,可以自行试试,不再赘述。此小程序可以修改查找任何相关的命令集,比如Linux,Windows,mac系统等命令。