使用for循环格式化数字模式

时间:2018-07-15 05:18:53

标签: python python-3.x

   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

这是输出越来越

我正在尝试获取这种格式,但是我正在获取连续数字。即使行都是奇数格式。也请提出任何建议

2 个答案:

答案 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(每个阶段值)。以降序打印这些值。