打印金字塔
这里只展示打印数字金字塔,答应
*
型金字塔更容易
金字塔:方法一
n = int(input('方法一,N:'))
for i in range(1, n+1):
print(' '*(n-i), end='') #空格数
for k in range(1, 2*i): #打印数字
print((i-abs(i-k)), end='') #每一行输出的第K个数的值
print() #打印数字后换行
## 金字塔:方法一找规律
i n=4 空格 每行数字个数(第二个for的范围) 每行中的最大数 每一行输出的第K个数的值
1 1 3 = n-i = 4-1 1 = 2i-1 = 2*1-1 1 = i 最大数-|最大数-K| = 1-|1-k|
2 121 2 = n-i = 4-2 3 = 2i-1 = 2*2-1 2 = i 最大数-|最大数-K| = 2-|2-k|
3 12321 1 = n-i = 4-3 5 = 2i-1 = 2*3-1 3 = i 最大数-|最大数-K| = 3-|3-k|
4 1234321 0 = n-i = 4-4 7 = 2i-1 = 2*4-1 4 = i 最大数-|最大数-K| = 4-|4-k|
金字塔:方法一
金字塔:方法一改版
最大数只能是5,第5行中间最大数是9,如果出现2位数的话会格式错乱:
n = int(input('方法一改版(最大数只能是5),N:'))
for i in range(1, n+1):
print(' '*(n-i), end='') #空格数
for k in range(1, 2*i): #打印数字
print((2*i-1-abs(2*i-1-(2*k-1))), end='') #每一行输出的第K个数的值
print() #打印数字后换行
## 金字塔:方法一改版找规律
i n=4 空格 每行数字个数(第二个for的范围) 每行中的最大数 每一行输出的第K个数的值
1 1 3 = n-i = 4-1 1 = 2i-1 = 2*1-1 1 = 2i-1 = 2*1-1 最大数-|最大数-(2k-1)| = 1-|1-(2k-1)|
2 131 2 = n-i = 4-2 3 = 2i-1 = 2*2-1 3 = 2i-1 = 2*1-1 最大数-|最大数-(2k-1)| = 3-|3-(2k-1)|
3 13531 1 = n-i = 4-3 5 = 2i-1 = 2*3-1 5 = 2i-1 = 2*1-1 最大数-|最大数-(2k-1)| = 5-|5-(2k-1)|
4 1357531 0 = n-i = 4-4 7 = 2i-1 = 2*4-1 7 = 2i-1 = 2*1-1 最大数-|最大数-(2k-1)| = 7-|7-(2k-1)|
金字塔:方法一改版
金字塔:方法二
这种方法只适用于步长为1的,无法实现:[1, 131, 13531, 1357531 135797531]
n = int(input('方法二,N:'))
for i in range(1, n+1):
print(' '*(n-i), end='') #空格数
print(int('1'*i)**2) #每一行输出的数值
## 金字塔:方法二找规律
i n=4 每行的空格数 第i的输出数
1 1 3 = n-i = 4-1 1**2
2 121 2 = n-i = 4-2 11**2
3 12321 1 = n-i = 4-3 111**2
4 1234321 0 = n-i = 4-4 1111**2
金字塔:方法二
打印棱形
打印棱形方法1
使用循环打印的方式
n = int(input('方法1,使用循环打印的方式,N:'))
for i in range(1, 2*n-1+1):
print(' '*(abs(n-i)), end='') #空格数
for k in range(1, 2*(n-abs(n-i))): #打印数字
print(n-abs(i-n)-abs(n-abs(i-n)-k), end='') #当前行的(最大数-|最大数-K|)
print()
## 方法1,找规律
i n = 4 空格 每行数字个数(右开,不包含) 最大数 每一行输出的第K个数的值
1 1 3 = |n-i| = |4-1| 1 = 2*(n-abs(n-i))-1 = 2(4-|4-1|)-1 1 = n-|i-n| = 4-|1-4| 最大数-|最大数-K| = 1-|1-k|
2 121 2 = |n-i| = |4-2| 3 = 2*(n-abs(n-i))-1 = 2(4-|4-2|)-1 2 = n-|i-n| = 4-|2-4| 最大数-|最大数-K| = 2-|2-k|
3 12321 1 = |n-i| = |4-3| 5 = 2*(n-abs(n-i))-1 = 2(4-|4-3|)-1 3 = n-|i-n| = 4-|3-4| 最大数-|最大数-K| = 3-|1-k|
4 1234321 0 = |n-i| = |4-4| 7 = 2*(n-abs(n-i))-1 = 2(4-|4-4|)-1 4 = n-|i-n| = 4-|4-4| 最大数-|最大数-K| = 4-|4-k|
5 12321 1 = |n-i| = |4-5| 5 = 2*(n-abs(n-i))-1 = 2(4-|4-5|)-1 3 = n-|i-n| = 4-|5-4| 最大数-|最大数-K| = 3-|2-k|
6 121 2 = |n-i| = |4-6| 3 = 2*(n-abs(n-i))-1 = 2(4-|4-6|)-1 2 = n-|i-n| = 4-|6-4| 最大数-|最大数-K| = 2-|2-k|
7 1 3 = |n-i| = |4-7| 1 = 2*(n-abs(n-i))-1 = 2(4-|4-7|)-1 1 = n-|i-n| = 4-|7-4| 最大数-|最大数-K| = 1-|1-k|
打印棱形方法1
打印棱形方法2
使用
[1**2, 11**2, 111**2, ……]
的方式
n = int(input('方法2,使用[1**2, 11**2, 111**2, ……]的方式,N:'))
for i in range(1, 2*n-1+1):
print(' '*(abs(n-i)), end='') #空格数
print(int('1'*(n-abs(n-i)))**2) #每一行输出的数值
## 打印棱形方法2,找规律
i n = 4 空格 几个1 每行输出的数值
1 1 3 = |n-i| = |4-1| 1 = n-|n-i| = 4-|4-1| 1**2
2 121 2 = |n-i| = |4-2| 2 = n-|n-i| = 4-|4-1| 11**2
3 12321 1 = |n-i| = |4-3| 3 = n-|n-i| = 4-|4-1| 111**3
4 1234321 0 = |n-i| = |4-4| 4 = n-|n-i| = 4-|4-1| 1111**2
5 12321 1 = |n-i| = |4-5| 3 = n-|n-i| = 4-|4-1| 111**2
6 121 2 = |n-i| = |4-6| 2 = n-|n-i| = 4-|4-1| 11**2
7 1 3 = |n-i| = |4-7| 1 = n-|n-i| = 4-|4-1| 1**2
打印棱形方法2