如何修改Python代码实现按字母序输出的字符频率直方图
原代码存在两个核心问题:
- 循环遍历对象错误:你使用清洗后的文本作为遍历对象,只会输出文本中出现过的字符,且字符出现多少次就会重复输出多少次,自然不会覆盖全部26个字母,也会出现示例中l、o重复输出的问题
- 条件判断逻辑无效:循环内的两个
if判断没有实际作用,从new_text中取出的字符必然属于new_text,第二个判断永远不会触发,自然无法输出未出现的字母
修改后的代码如下:
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] def character_frequency_string(text): # remove_extraneous函数会剔除text字符串中所有不属于英文字母的内容 new_text = remove_extraneous(text).lower() # 遍历a-z全字母表,保证输出顺序和覆盖范围 for char in alphabet: count = new_text.count(char) print(f"{char} {'*' * count}")
修改说明:
- 将循环对象替换为预定义的全字母表
alphabet,确保按a-z顺序输出全部26个字母 - 直接统计每个字母在清洗后文本中的出现次数,不需要额外的存在判断,次数为0时星号部分自然为空
- 新增
.lower()统一转为小写,避免输入包含大写字母时统计遗漏,可根据你的remove_extraneous实际处理逻辑决定是否保留
内容的提问来源于stack exchange,提问作者ashnotallyson
相关产品推荐
相关产品推荐

