Python实现小写字母星号直方图功能编程问题求助
实现方案
核心逻辑
- 先统计输入字符串中26个小写字母的出现次数,忽略空格
- 取所有字母出现次数的最大值作为星号的总行数
- 从最高层开始逐行打印:每行遍历26个字母,若该字母的出现次数≥当前层数,对应位置输出
*,否则输出空格 - 用到
str.find()方法获取字母在字母表中的索引,和你收到的提示匹配
可运行代码
def histogram(string): abc = "abcdefghijklmnopqrstuvwxyz" # 初始化26个字母的计数数组 count = [0] * 26 for char in string: if char == " ": continue # 获取当前字母在字母表中的索引 idx = abc.find(char) count[idx] += 1 # 打印首行字母表 print(abc) # 打印空行匹配示例格式 print() # 最大出现次数为星号总行数 max_level = max(count) # 从最高层向下逐行打印 for current_level in range(max_level, 0, -1): line = [] for i in range(26): line.append("*" if count[i] >= current_level else " ") print("".join(line)) # 测试调用 histogram("aba ima")
运行上述代码输出和你给出的示例完全一致。
你之前版本的问题说明
- 第一版仅判断字母是否在字符串中存在,没有统计具体出现次数,只能输出单行结果
- 第二版初始化了计数器数组,但没有实际遍历输入字符串完成计数逻辑
- 第三版尝试逐次替换字符,但没有按层数生成行的逻辑,输出顺序不符合要求
内容的提问来源于stack exchange,提问作者user16718429
相关产品推荐
相关产品推荐

