Python 倒数三角形
我正在尝试创建一个反向三角形,如下所示:Python 倒数三角形,python,python-3.x,Python,Python 3.x,我正在尝试创建一个反向三角形,如下所示: 0123456789 012345678 01234567 0123456 012345 01234 0123 012 01 0 我离得很近,但离得很远。这是我目前拥有的代码: for e in range (10, 0, -1): for d in range (10-e)
0123456789
012345678
01234567
0123456
012345
01234
0123
012
01
0
我离得很近,但离得很远。这是我目前拥有的代码:
for e in range (10, 0, -1):
for d in range (10-e):
print (' ', end = ' ')
for d in range (e):
e = e - 1
print (e, end = ' ')
print()
输出为:
9876543210
876543210
76543210
6543210
543210
43210
3210
210
10
0
请帮助:)似乎你把这件事复杂化了:
for i in range(10):
print(' ' * i + ''.join(map(str, range(0, 10 - i))))
0123456789
012345678
01234567
0123456
012345
01234
0123
012
01
0
从0到9运行一个循环。在每次迭代中,计算出要相应地打印多少空格和数字。随着
i
的增加,要打印的空格数也会增加。相应地,要打印的位数减少 实现这一点的更简单方法是创建一个自定义函数:
- 使用
str.format
- 使用
str.join
map
实现,如下所示:
def print_triange(n):
for i in range(n):
print('{:>{}}'.format(''.join(map(str, range(n-i))), n))
样本运行:
>>> print_triange(10)
0123456789
012345678
01234567
0123456
012345
01234
0123
012
01
0
几乎,您必须在第6行打印
d
,而不是e
:
for e in range (10, 0, -1):
for d in range (10 -e):
print (' ', end='')
for d in range (e):
e = e - 1
print (d, end='')
print()
您可以使用空字符串作为
print
的end
参数
from string import digits
triangle = '\n'.join(digits[:10-i].rjust(10) for i in range(10))
print(triangle)
使用嵌套列表理解且不使用
映射
或导入
的一行程序:
print('\n'.join([''.join([str(j) for j in range(10-i)]).rjust(10,' ') for i in range(10)]))
0123456789
012345678
01234567
0123456
012345
01234
0123
012
01
0
在范围(e)内的d的
中,d
是一个从0到e
的值。也许你可以把它打印出来?起首部分是为了原创性。很好地使用了string.digits
(+1)
print('\n'.join([''.join([str(j) for j in range(10-i)]).rjust(10,' ') for i in range(10)]))
0123456789
012345678
01234567
0123456
012345
01234
0123
012
01
0