数字三角形的打印(python)
方法一:
# 最常规打印法
# 利用空格进行右对其
n = 12
for i in range(1, n + 1):
for j in range(n ,0, -1):
if j > i:
print(" " * len(str(j)), end=" ")
else:
print(j, end=" ")
print() # 换行
方法二:
''' 1.先打印最后一行,然后计算它的长度 2.然后再使用format进行右对其 3.注意join的使用它在每次遍历时每个元素必须是字符串 '''
n = 12
g = (str(i) for i in range(n, 0, -1))
str1 = " ".join(g)
for i in range(1, n + 1):
print("{:>{}}".format(" ".join((str(j) for j in range(i, 0, -1))), len(str1)))
方法三:
# 利用切片的方式
n = 12
g = [ str(i) for i in range(n, 0, -1)]
man = " ".join(g)
length = len(man)
for j in range(1, n + 1):
print("{:>{}}".format(" ".join(g[n-j:n]), length))
结果:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
11 10 9 8 7 6 5 4 3 2 1
12 11 10 9 8 7 6 5 4 3 2 1
字符串切割方法:
方法四:
''' 1.利用空格进行字符串的切片 2.先用列表标记出临界点 '''
n = 12
#使用join拼接字符串
str1 = " ".join([str(i) for i in range(n, 0, -1)])
tab = { 10**i for i in range(1, 5)} # 集合使用hash一步到位,效率极高
step = 1
num = 2
length = len(str1)
for i in range(1, n + 1):
print("{:>{}}".format(str1[-step:], length)) # 使用format函数进行右对齐
if (i + 1) in tab:
num += 1
step += num
结果:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
11 10 9 8 7 6 5 4 3 2 1
12 11 10 9 8 7 6 5 4 3 2 1
方法五
''' 到三角形 1.先生成最后一排 2.然后每遇见一个空格,利用切片打印空格后面的一排 3.注意这里for循环i的大小和没有被切的部分的长度一样, 4.print函数中spe自带一个空格 '''
n = 12
tal = " ".join([str(i) for i in range(n, 0, -1)])
print(tal)
lenght = len(tal)
for i in range(1, lenght+1):
if tal[i - 1] == " ":
print(" " * i, tal[i:], sep='')
结果:
12 11 10 9 8 7 6 5 4 3 2 1
11 10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
方法六:
n = 12
tail = " ".join([str(i) for i in range(n, 0, -1)])
print(tail)
for i, c in enumerate(tail):
if c == " ":
print(" "*i, tail[i+1:])
结果:
12 11 10 9 8 7 6 5 4 3 2 1
11 10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
方法七:
n = 12
tail = " ".join([str(i) for i in range(n, 0, -1)])
lenstr = len(tail)
for i in range(-1, -lenstr-1, -1):
if tail[i] == " ":
print(" "*(i+lenstr), tail[i+1:])
print(tail)
结果:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
11 10 9 8 7 6 5 4 3 2 1
12 11 10 9 8 7 6 5 4 3 2 1