繁体   English   中英

带环的 python 太空塔

[英]space tower in python with loops

1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8     8 7 6 5 4 3 2 1
1 2 3 4 5 6 7         7 6 5 4 3 2 1
1 2 3 4 5 6             6 5 4 3 2 1
1 2 3 4 5                 5 4 3 2 1
1 2 3 4                     4 3 2 1
1 2 3                         3 2 1
1 2                             2 1
1                                 1

我如何在 python 中对此进行编码?

到目前为止,这是我的代码,但我无法弄清楚空格。

number = int(input("enter a number to create your triangle: "))

for col in range(number,0,-1):
    for row in range(1,col):
        print(row,  end=" ")

    if col<number:
        print(" "*(row*2), end="")
        
    for row in range(col-1,0,-1):
        print(row, end=" ")
    print()

您可以创建一个包含所有数字作为字符串的基本列表,而不是多次循环,迭代一次以打印每一行,然后反之:

number = 9

base = [str(n) for n in range(1, number+1)]
for i, idx in enumerate(range(len(base)-1, 0, -1)):
    if i == 0:
        print(' '.join(base + base[::-1]))
    base[idx] = ' '
    print(' '.join(base + base[::-1]))

出去:

1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8     8 7 6 5 4 3 2 1
1 2 3 4 5 6 7         7 6 5 4 3 2 1
1 2 3 4 5 6             6 5 4 3 2 1
1 2 3 4 5                 5 4 3 2 1
1 2 3 4                     4 3 2 1
1 2 3                         3 2 1
1 2                             2 1
1                                 1

正如我在评论中指出的那样,使用print()的所有“功能”并解包可以使它变得非常容易。

默认情况下,所有传递给print()的 arguments 都将用空格分隔,因此我们可以解压缩从1到当前索引的范围、空格字符串和从当前索引到1的反向范围:

number = int(input("enter a number to create your triangle: "))

for i, n in enumerate(range(number, 0, -1)):
    print(*range(1, n + 1), *(" " * (i * 2)), *range(n, 0, -1))

Output:

1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8     8 7 6 5 4 3 2 1
1 2 3 4 5 6 7         7 6 5 4 3 2 1
1 2 3 4 5 6             6 5 4 3 2 1
1 2 3 4 5                 5 4 3 2 1
1 2 3 4                     4 3 2 1
1 2 3                         3 2 1
1 2                             2 1
1                                 1

重要通知:上面的代码仅适用10以下的数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM