使用while循环打印图案时开头出现多余空行的原因排查
多余空行的原因及修复
核心原因
你的代码里,循环起始值和终止条件的搭配错误导致了开头的空行:
- 初始
row = 0,循环条件是row <= rows,第一次进入循环时,row的值为0,执行0 * "*"会得到空字符串,调用print()打印空字符串就会输出一行空白。 - 后续
row递增到1、2、3,分别输出1个、2个、3个星号,这部分符合预期,但开头的空行就是第一次循环的产物。
另外注意:函数定义只接收1个参数rows,但你调用时传了True, 3两个参数,这会触发TypeError,应该是笔误,正确调用应为print_pattern(3)。
修复方案
有两种简单的修复方式:
方式一:修改循环条件
把row <= rows改成row < rows,让循环从0到rows-1执行,避免第一次输出空字符串:
def print_pattern(rows): row = 0 while row < rows: output = row * "*" row += 1 print(output) print_pattern(3)
方式二:调整初始row值
将row的初始值设为1,保持循环条件row <= rows,这样第一次循环就直接输出1个星号:
def print_pattern(rows): row = 1 while row <= rows: output = row * "*" row += 1 print(output) print_pattern(3)
修复后的输出与预期一致:
* ** ***
内容的提问来源于stack exchange,提问作者Illusioner_
相关产品推荐
相关产品推荐

