求解python 數字三角形程式碼縮減

目前印出來的跟題目要求的是一樣的了
但是現在不知道要怎麼把程式碼縮減成一個迴圈
題目如圖

img

程式碼


q =int(input())

if q==1:
    for i in range(1,int(input())+1): 
        print(pow(int(pow(10,i)//9),2))

if q==2:
    w =int(input())
    for x in range(1,w+1):
        print('_'*(w-x),end='')
        n=1
        while n<=x:
            print(n,sep='',end='')
            n+=1
        n=x-1
        while n>=1:
            print(n,sep='',end='')
            n-=1
        print()
        
if q==3:
    w= int(input())
    for i in range(w,0,-1):
        print('_'*(w-i),end='')
        for j in range(1,i+1):
            print(j,end='')
        for j in range(i-1,0,-1):
            print(j,end='')
        print()