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

如何从数字列表生成直方图?代码末尾输出None如何消除?

解决Python直方图函数末尾输出None的问题

问题出在你用print()包裹了histogram函数的调用——因为你的histogram函数没有定义返回值,Python中所有没有return语句的函数默认返回None,所以print(histogram(...))相当于打印了这个默认返回的None。

有两种简单的解决方式:

方式一:直接调用函数,不用print包裹

既然函数内部已经用print()输出了每一行直方图,直接调用函数即可,不需要额外的print():

def histogram(list1):
    for n in list1:
        output = " "
        times = n
        while times > 0:
          output += "*"
          times -= 1
        print(output)

# 直接调用,不要用print包裹
histogram([1, 3, 5, 7, 18])

方式二:让函数返回结果字符串,再打印返回值

如果希望函数更灵活(比如后续可以对结果做其他处理),可以让函数把所有行拼接成一个字符串返回,再用print()输出:

def histogram(list1):
    result_lines = []
    for n in list1:
        # 用字符串乘法替代while循环,代码更简洁高效
        line = " " + "*" * n
        result_lines.append(line)
    # 用换行符连接所有行
    return "\n".join(result_lines)

# 打印函数返回的结果字符串
print(histogram([1, 3, 5, 7, 18]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:10:55