我想编写一个打印此输出的程序:
*
* *
* *
* *
*
但是它打印的是:
*
* *
* * *
* * * *
* * * * *
假设 n = 5是用户的输入,那么第一个星应该在中心,最后一个星也应该在中心,因此我可以将输入数除以2得到第一颗和最后一颗星星的位置。
对于其他恒星,我不了解如何制作,因此,如果一颗恒星位于上方,则下一颗恒星不应位于其下方。
def Empty_triangle(n):
k = 2*n - 2
for i in range(0, n):
for j in range(0, k):
print(end=" ")
k = k - 1
for j in range(0, i+1):
# printing stars
print("* ", end="")
# ending line after each row
print("\r")
# Driver Code
n = 5
Empty_triangle(n)
答案 0 :(得分:1)
这种事情怎么样?
print("\n".join([" "*(n-2-i)+"*"+" "*(2*i-1)+("*"if i>0 else"") for i in list(range(n-1))+[0]]))
例如,对于n = 5,给出以下输出:
*
* *
* *
* *
*
这是您想到的吗?
这是一个更少的代码-golfish版本
def Empty_triangle(n):
for i in list(range(n-1))+[0]: #i.e. [0,1,2,3,4,0] so the last line is the same as the first
line = ""
leadingSpaces = n-2-i
line += " "*leadingSpaces
line += "*"
if i != 0:
middleSpaces = 2*i-1
line += " "*middleSpaces
line += "*"
print(line)
# Driver Code
n = 5
Empty_triangle(n)