我想打印以下图案,但长度的while循环未运行。当我运行代码时,它只打印一个三角形 在代码下面是预期的输出和实际的输出:
height = int(input("Enter height ? "))
length = int(input("Enter length ? "))
spaces = height-1
spaces2 = 0
while length > 0:
for n in range(height):
for i in range(spaces):
print(' ',end="")
print('/',end="")
for j in range(spaces2):
print(' ',end="")
print('\\',end="")
for k in range(spaces):
print(' ', end="")
print('')
height-=1
spaces-=1
spaces2+=2
length-=1
预期输出:
高度= 5 长度= 3
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/ \ / \ / \
/ \/ \/ \
代码运行时输出:
高度= 5 长度= 3
/\
/ \
/ \
/ \
/ \
答案 0 :(得分:2)
while
循环正在工作。但是,第一次通过while
循环,您的代码将更改height
,spaces2
和spaces
的值。第二次通过while
循环,这些值全为零,因此for
循环不执行任何操作。为了显示这一点,请在行print(length)
下方添加行length -= 1
。您将看到while
循环的3次迭代。
答案 1 :(得分:0)
这是因为第一个for循环将height变量更改为零,所以while循环的第二个迭代中的for和另一个for无效(迭代零时间)
答案 2 :(得分:0)
尽管问题已经得到回答,但发布了另一种解决方案(由于我对问题的处理有点过分,因此采取了稍微不同的方法)。
code.py :
#!/usr/bin/env python3
import sys
def _triangle(height, bk_char=chr(0x20)):
for i in range(height):
yield "".join([bk_char * (height - i - 1), '/', bk_char * (2 * i), '\\', bk_char * (height - i - 1)])
def triangles(height, count):
for line in _triangle(height):
yield line * count
def main():
print("\n".join(triangles(7, 5)))
if __name__ == "__main__":
print("Python {:s} on {:s}\n".format(sys.version, sys.platform))
main()
print("Done.")
注释:
输出:
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q055810531]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" code.py Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32 /\ /\ /\ /\ /\ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \/ \/ \/ \/ \ Done.