用双层循环遍历,每行前面补空格即可。
你题目的解答代码如下:
n = 5
for i in range(1,n+1): #i 从1循环到n
for j in range(n-i): #每行前面补n-i组空格
print(" ",end="") #每一组输出3个空格
for j in range(i*2-1,0,-2): #内循环j从i*2-1开始每次-2,一直到1
print(f"{j:>3}",end="") #输出j
print() #换行
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
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
类似右下角的直角三角形,双层循环遍历,每执行一次外循环,换一次行即可。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!