1
3 2
6 5 4
10 9 8 7
10 9 8 7
6 5 4
3 2
1
userInput=5
for i in range(1,userInput+1):
for s in range (userInput - i) : # s is equivalent to to spaces
print(" ", end="")
for j in range(1,(i * 2) ):
print(j, end="")
print()
for i in range(userInput-1, 0, -1):
for s in range (userInput - i) :
print(" ", end="")
for j in range(1,(i * 2)):
print(j, end="")
print()
1
123
12345
1234567
123456789
1234567
12345
123
1
这是输出越来越
我正在尝试获取这种格式,但是我正在获取连续数字。即使行都是奇数格式。也请提出任何建议
答案 0 :(得分:0)
这是使用列表推导和一些字符串操作的解决方案:
def tri(num):
return num * (num + 1) // 2
def make_list(size, depth=1):
shape = " " * (size - depth - 1)
shape += " ".join((str(tri(depth) - x) for x in range(depth)))
if depth == size:
return []
return make_list(size, depth + 1) + [shape]
def print_dia(size):
dia = make_list(size)
print("\n".join(dia[::-1]))
print("\n".join(dia))
if __name__ == "__main__":
print_dia(5)
我通过使用整体大小和当前行号来生成每一行,以产生正确的缩进,起始值(三角形)和该行上的值数。然后,我生成行列表,先打印反向列表,然后打印原始列表,并用换行符分隔。
答案 1 :(得分:-1)
userInput=5
temp=0
for i in range(1,userInput+1):
temp+=i
for s in range(0,userInput-i):
print(" ",end="")
for j in range(i):
print(temp-j,end=" ")
print()
for j in range(userInput,0,-1):
for s in range(userInput-j):
print(" ",end="")
for j in range(j):
print(temp,end=" ")
temp-=1
print()
@arthur_curry ...我只是用于所需输出的循环..我使用了一个temp变量来保持计数并添加了i(每个阶段值)。以降序打印这些值。