You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:27:00