9.13 同义词库实验:完善Python程序实现指定同义词查询
同义词文件处理程序完善
需求说明
有一组文本文件,每个文件以对应单词命名,文件内每行存储同一字母开头的同义词(空格分隔)。需完善Python程序实现以下功能:
- 读取用户输入的目标单词(对应文件名,无需加
.txt后缀)和指定字母 - 打开对应文本文件,将内容存入预定义字典:字典以同义词的首字母为键,对应值为该首字母开头的同义词列表(所有字母统一为小写)
- 输出所有以输入字母开头的同义词,每行一个;若无匹配项,输出提示信息
待完善的原始代码
synonyms = {} # 定义字典 file_name = input() # 获取不带txt后缀的文件名 k = open(f'{file_name}.txt')# 打开文件 letter = input()# 获取要匹配的字母 contents = k.readlines() # 读取所有行并赋值给contents word_list = [] # 定义列表 for line in contents: # 遍历contents中的每一行 #word_list = lines.split() for word in line.split(): # 遍历每行分割后的每个单词 word_list.append(word) # 将每个单词添加到word_list列表 for word in word_list:# 遍历word_list中的每个单词 if (word[0] in synonyms.keys()):# 如果单词首字母已作为字典键存在 synonyms [word[0]].append(word)# 将单词添加到对应键的列表中 #print(synonyms, word[0]) else:# 如果首字母未作为键存在 synonyms [word[0]] = [word]# 以首字母为键创建新列表,存入当前单词 print(synonyms) # 开始使用字典 print(synonyms [word])
完善后的代码及说明
核心优化点
- 统一大小写处理:将所有单词和目标字母转为小写,避免大小写差异导致的匹配错误
- 简化逻辑:直接按行处理文件内容,无需额外维护
word_list,提升运行效率 - 正确关联用户输入:使用用户指定的字母查询,而非循环变量的首字母
- 资源安全:用
with语句自动管理文件,避免手动关闭遗漏导致的资源泄漏 - 异常场景处理:增加无匹配时的提示输出
- 清理冗余代码:移除不必要的字典打印语句
完善后的代码
synonyms = {} # 定义存储同义词的字典,键为小写首字母,值为同义词列表 # 获取用户输入并预处理 file_name = input().strip() target_letter = input().strip().lower() # 统一转为小写,确保匹配一致性 # 自动管理文件资源 with open(f'{file_name}.txt', 'r', encoding='utf-8') as f: for line in f: # 分割每行单词并转为小写 words = [word.lower() for word in line.strip().split()] for word in words: first_char = word[0] # 更新字典:存在键则追加,不存在则创建新列表 if first_char in synonyms: synonyms[first_char].append(word) else: synonyms[first_char] = [word] # 查询并输出结果 if target_letter in synonyms: for syn in synonyms[target_letter]: print(syn) else: print(f"没有找到以字母'{target_letter}'开头的同义词")
内容的提问来源于stack exchange,提问作者Mars
相关产品推荐
相关产品推荐

