Python打印菱形、三角形出现额外None输出,如何在保留print要求下修复
问题原因
你定义的diamond和triangle两个函数内部已经通过print语句输出了图案的每一行,这两个函数没有显式编写return语句,Python中所有无显式返回值的函数默认都会返回None。你写的print(diamond(k))和print(triangle(k))相当于额外打印了函数的返回值,这就是输出末尾多出None的原因。
修改方案
你不需要在调用函数的时候额外套一层print,直接调用函数即可。函数内部的print语句已经完全满足教授要求的必须使用print输出的规则,没有取消print的使用。
修改后的代码如下:
def up_and_down(k): return (*range(1, k), *range(k, 0, -1)) def diamond(k): pad = '#' fill = '*' w = (2 * k) - 1 for i in up_and_down(k): print(f'{fill * len(up_and_down(i)):{pad}^{w}}') # 去掉外层多余的print,直接调用函数 diamond(k) def triangle(k): w = (2 * k) - 1 pad = '#' fill = '*' for i in range(1, k+1): print(f'{fill * len(up_and_down(i)):{pad}^{w}}') # 同样去掉外层多余的print triangle(k)
修改后函数内部的print会正常输出所有图案行,不会额外打印None,完全符合使用print输出的要求。
内容的提问来源于stack exchange,提问作者Broski
相关产品推荐
相关产品推荐

