如何实现字符串字符频率统计并找出缺失的大写英文字母?
解决字符频率统计与缺失大写字母查找问题
你的代码存在几处语法错误和逻辑问题,导致无法正确识别缺失字母。以下是修正后的完整代码及问题说明:
问题分析
- 未正确引用模块属性:
ascii_uppercase属于string模块,直接使用会触发NameError,需改为string.ascii_uppercase - 函数定义语法疏漏:
def find_missing_letter(string_1)缺少结尾的冒号: - 集合运算逻辑错误:字符串不能直接与集合做差集运算,需先将输入字符串转为集合
set(string_1) - 内置函数大小写错误:Python中打印函数是小写
print,大写Print会报错 - 冗余代码:
list(string_1.encode('ascii'))对当前需求无实际作用,可直接删除
修正后的完整代码
import string # 目标字符串 string_1 = 'WSXFGTYUJNMKLOIUYGFDXCVBHJKLMNBVFDEW' # 统计字符频率 frequencies = {} for char in string_1: if char in frequencies: frequencies[char] += 1 else: frequencies[char] = 1 print(f"每个字符在'{string_1}'中的频率:\n{frequencies}") # 查找缺失的大写英文字母 def find_missing_letters(input_str): # 生成所有大写字母的集合 all_uppercase = set(string.ascii_uppercase) # 生成输入字符串中出现的大写字母集合 present_chars = set(input_str) # 计算差集得到缺失的字母 return all_uppercase - present_chars missing_letters = find_missing_letters(string_1) print("未出现的大写英文字母:", sorted(missing_letters))
代码说明
- 字符频率统计:遍历字符串用字典记录字符出现次数,仅优化了打印语句格式(f-string更简洁),原逻辑本身是正确的
- 缺失字母查找:利用集合差集运算快速定位未出现的大写字母,最后用
sorted()将结果按字母顺序输出,提升可读性
内容的提问来源于stack exchange,提问作者Sammy2021
相关产品推荐
相关产品推荐

