我正在编写一个程序,该程序接受用户输入的字符和三角形高度,并使用它们使用 Python 代码绘制三角形。它正在绘制我想要的东西,但由于某种原因,它也在最后一行的正下方绘制了另一行字符。我正在练习嵌套循环。
这是我正在使用的代码:
triangle_char = input('Enter a character:\\n')
triangle_height = int(input('Enter triangle height:\\n'))
count1 = 0
while count1 \< triangle_height:
print(triangle_char)
count2 = 0
while count2 \<= count1:
print(triangle_char, end=' ')
count2 = count2 + 1
count1 = count1 + 1
这就是我得到的...
Enter a character:
Enter triangle height:
%
% %
% % %
% % % %
% % % % %
% % % % %
只有在打印换行符时才会打印带有字符的行(作为一行)。这发生在外循环的下一次迭代中,因为内循环有end=' '
. 但是对于最后一次迭代,它print(triangle_char)
没有被执行,因此最后一行错过了一个额外的字符(和一个换行符)。
一个解决方案是将 finalprint(triangle_char)
放在两个循环之外。这将导致多出一行,因此需要更改外部条件:
triangle_char = input('Enter a character: ')
triangle_height = int(input('Enter triangle height: '))
count1 = 0
while count1 < triangle_height-1:
print(triangle_char)
count2 = 0
while count2 <= count1:
print(triangle_char, end=' ')
count2 = count2 + 1
count1 = count1 + 1
print(triangle_char)
但我只是建议改用 for 循环:
triangle_char = input('Enter a character: ')
triangle_height = int(input('Enter triangle height: '))
for i in range(triangle_height-1):
print(triangle_char)
for _ in range(i+1):
print(triangle_char, end=' ')
print(triangle_char)
或使用以下str.join()
功能:
triangle_char = input('Enter a character: ')
triangle_height = int(input('Enter triangle height: '))
for i in range(1, triangle_height+1):
print(" ".join(triangle_char for _ in range(i)))
(需要再次稍微更改限制)
当然,这是 Python,你可以将上面的一行
triangle_char = input('Enter a character: ')
triangle_height = int(input('Enter triangle height: '))
print("\n".join(" ".join(triangle_char for _ in range(i)) for i in range(1, triangle_height+1)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句