如何移除Python打印钻石图案时输出的多余None
打印钻石图案出现多余None的解决方案
问题根源
- 你定义的
triangle和diamond函数没有显式设置返回值,Python函数无自定义返回值时默认返回None - 你将两个函数的调用语句直接写入了f-string中,相当于把两个函数的返回值(即
None)拼接为字符串,最后执行print(l)时就会额外输出两个None - 额外提示:两个函数内部写的
k = 3属于无效代码,计算完a之后没有再用到变量k,可以直接删除
解决方案
方案1(最简修改)
两个函数本身已经内置了print语句,调用时会直接输出图案,无需再拼接字符串二次打印,直接把最后两行代码替换为:
triangle(k) diamond(k)
方案2(函数返回字符串的写法)
如果你希望函数返回图案字符串供后续使用,可以修改函数逻辑,将每行内容收集后返回,示例如下:
k = 7 def triangle(k): a = (2*k) -1 lines = [] for x in range(0,a+1): if x % 2 != 0: f = int((a - x)/2) g = f"{'#'*f}{'*'*x}{'#'*f}" lines.append(g) return '\n'.join(lines) def diamond(k): a = (2 * k) - 1 lines = [] for x in reversed(range(0, a)): if x % 2 != 0: f = int((a - x) / 2) g = f"{'#' * f}{'*' * x}{'#' * f}" lines.append(g) return '\n'.join(lines) l = f"{triangle(k)}\n{diamond(k)}" print(l)
内容的提问来源于stack exchange,提问作者Nutnicha
相关产品推荐
相关产品推荐

