题目
拆解下思路是这样的
画数字还是空格都得使用循环结构来解题
1、每一行是先画空格还是数字呢?
2、还有就是当三角形为n层的时候,第i层应该画多少个空格呢?
3、第i层的起始数字是几?
4、当三角形为n层时的时候,第i层应该画多少个数字呢?
带着这个思路来分析模式A
因为第一层有5个空格,且只有一个数字
1、所以先画数字
2、当三角形为n层的时候,第i层有5个空格(无视)
3、 第i层的起始数字为1
4、当三角形为n层的时候,第i层有i个数字
所以主要代码为
for i in range(1, n + 1): #注意冒号
for j in range(1, i + 1): #注意冒号
完整代码为:
n = int(input("请输入三角形层数"))
for i in range(1, n + 1):
for j in range(1, i + 1):
print(f"{j}\t", end="")
print()
效果如下:
模式B
1、先画数字
2、当三角形为n层的时候,第i层有0个空格(无视)
3、第i层起始数字是1
4、当三角形为n层的时候,第i层有n-i+1个数字(后面取不到,i要变成i+2 多一位数)
所以主要代码如下:
for i in range(1, n + 1):
for j in range(1, n - i + 2): # 后面取不到,i要变成i+2 多一位数
整体代码:
n = int(input("请输入三角形层数"))
for i in range(1, n + 1):
for j in range(1, n - i + 2): # 后面取不到,i要变成i+2 多一位数
print(f"{j}\t", end="")
print() #进行换行操作
效果如图:
模式C:
1、 先画空格(明显前面有5个空格)
2、当三角形为n层的时候,第i层有n-i个空格
3、第i层起始数字是i(1层为1个,2层为2个.......依此类推)
4、当三角形为n层的时候,第i层有i个数字
主要代码如下:
for i in range(1, n + 1):
for _ in range(n - i):
for j in range(i, 0, -1):
全部完整代码:
n = int(input("请输入三角形层数"))
for i in range(1, n + 1):
for _ in range(n - i):
print(f"\t", end="")
for j in range(i, 0, -1):
print(f"{j}\t", end="")
print()
效果:
模式D:
1、先画空格
2、当三角形为n层的时候,第i层有i-1个空格
3、第i层起始数字是1
4、当三角形为n层的时候,第i层有n-i+1个数字(注意到时候range特性)
主要代码:
for i in range(1, n + 1):
for _ in range(i - 1):
for j in range(1, n - i + 2, 1): # 因为range的特性后面的1取不到 所以再加个1
全部代码如下:
n = int(input("请输入三角形层数"))
for i in range(1, n + 1):
for _ in range(i - 1):
print(f"\t", end="")
for j in range(1, n - i + 2, 1): # 因为range的特性后面的1取不到 所以再加个1
print(f"{j}\t", end="")
print()
效果如图: