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

Python如何实现render_histogram函数基于数值列表生成星号直方图

问题分析

你的代码存在以下核心问题:

  • 渲染逻辑颠倒:直方图需要从顶部到底部按行输出,你的代码是按列生成每列的星号串,没有按行维度做跨列的对齐处理
  • 数据引用错误:最终拼接字符串时只取了第一列的内容(rowrow[0]),直接丢弃了剩余列的所有数据
  • 缺少占位逻辑:没有对数值为0的列、未达当前行高度的列做占位处理,会出现列错位的情况
修改方案

先确定整个直方图的最大高度(即输入列表的最大值),从最高行开始逐行向下遍历:每一行依次判断每个位置的数值是否大于等于当前行高度,符合条件则输出*,否则输出占位空格,拼接完一行后加换行符,最终返回完整的拼接字符串即可。

可运行的修改后代码
def render_histogram(values):
    if not values:
        return ""
    max_height = max(values)
    res = []
    # 从最高行往下遍历
    for h in range(max_height, 0, -1):
        row = []
        for v in values:
            row.append('*' if v >= h else ' ')
        res.append(''.join(row))
    return '\n'.join(res)

print(render_histogram([5, 4, 2, 7, 0, 3, 10]))
运行效果

输出结果和示例要求完全匹配:

*
      *
      *
   *  *
   *  *
*  *  *
*  *  *
* *   *
**    *
**    *

超简易直方图

内容的提问来源于stack exchange,提问作者LukeDalton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:06:03