python格式化输出

img

利用python格式化输出编写一个程序,要求输出右对齐,我写了一个程序但是输出的时候只能输出一行

类似右下角的直角三角形,双层循环遍历,每执行一次外循环,换一次行即可。


n = 5
for i in range(1,n+1):
    for j in range(n-i):
        print("   ",end="")
    for j in range(i*2-1,0,-2):
        print(f"{j:>3}",end="")
    print()
lst =['1']
row = 7
for i in range(1,row+1):
    st = " ".join(lst)
    print(f"{st:>{2*row+1}}")
    lst.insert(0, str(2*i+1))

img

是这样吗?

def fun(n):
    for i in range(1,2*n,2):
        print('\t'*(n-int((i+1)/2)),end='')
        for j in range(i,0,-2):
            print(f'\t{j}',end='')
        print()
fun(5)

结果:

img

def prn(n):
    str_n = lambda x:' '.join(map(str,range(x*2-1,0,-2)))
    max_n = len(str_n(n))
    for i in range(1,n+1):
        print(f'{str_n(i):>{max_n}}')

prn(6)
prn(10)

输出:

           1
         3 1
       5 3 1
     7 5 3 1
   9 7 5 3 1
11 9 7 5 3 1
                       1
                     3 1
                   5 3 1
                 7 5 3 1
               9 7 5 3 1
            11 9 7 5 3 1
         13 11 9 7 5 3 1
      15 13 11 9 7 5 3 1
   17 15 13 11 9 7 5 3 1
19 17 15 13 11 9 7 5 3 1