我一直在探索Python,并正在制作一个程序来生成空心菱形图案,如下所示:
* * * * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * *
这是它的代码。我想知道还有哪些其他更好的方法可以降低复杂度(意味着减少循环次数)
n = int(input("Enter Size of Pattern: "))
#Upper Traingles
for i in range(n, 0, -1):
#Top Left Triangle
for j in range(1, i+1):
print("*", end =" ")
#Space between top triangles
for j in range(n-i):
print(" ",end=" ")
#Top Right Triangle
for j in range(n, 0, -1):
if(i < j):
print(" ",end=" ")
else:
print("*", end =" ")
print("\n", end="")
#Bottom Triangles
for i in range(-1, n-1):
#Bottom Left Triangle
for j in range(-1, i+1):
print("*", end =" ")
#Space between Bottom Triangles
for j in range((n-2)-i):
print(" ",end=" ")
#Bottom Right Triangle
for j in range(-1, n-1):
if(j < (n-3)-i):
print(" ",end=" ")
else:
print("*", end =" ")
print("\n", end="")
我是python的新手,所以这个问题有点天真。帮助我减少此代码的复杂性。
我也看到过很少的程序,但是根据该解决方案它们无法正常工作。
谢谢您的帮助
答案 0 :(得分:0)
n = int(input("Enter pattern size: "))
for i in range(n):
print((n-i) * '* ' + (2*i) * ' ' + (2*i) * ' ' + (n-i) * '* ' )
for i in range(n-1, -1, -1):
print((n-i) * '* ' + (2*i) * ' ' + (2*i) * ' ' + (n-i) * '* ')
输出:
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *