如何从数字列表生成直方图?代码末尾输出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
相关产品推荐
相关产品推荐

