Python中消除两个for循环间空行,实现正确菱形图案输出
修复菱形图案中的多余空行问题
你的代码生成菱形时出现的空行,根源是第二个循环的起始值设置错误,导致第一次迭代输出了全空格的空行。
修改方案
把第二个循环的range(n, 2*n+1)改成range(n+1, 2*n+1),跳过会输出空行的k=n迭代:
def print_shape(n): for i in range(0, n): print('*' * (n-i), end='') print(' ' * (i*2), end='') print('*' * (n-i), end='\n') # 调整循环起始值,跳过k=n的空行迭代 for k in range(n+1, 2 * n + 1): print('*' * (k - n), end='') print(' ' * ((4 * n) - (2 * k)), end='') print('*' * (k - n), end='\n') n = int(input('Enter a number: ')) print_shape(n)
测试输出(输入5时)
Enter a number: 5 ********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
问题原因说明
原代码中第二个循环从k=n开始,此时k-n=0,所以'*'*(k-n)是空字符串,空格计算为4*n - 2*k = 20 - 10 = 10,也就是输出10个空格,这就产生了那个多余的空行。调整起始值后,k从n+1开始,k-n=1,对应输出1个*、8个空格、1个*,正好和上半部分最后一行无缝衔接。
内容的提问来源于stack exchange,提问作者kayahankaya
相关产品推荐
相关产品推荐

