1

我有一项任务是创建一个倒计时for循环。指令是得到结果如下:

12345
1234
123
12
1

我可能会让这比实际更困难,但我对 Python 还是很陌生。

到目前为止,我的脚本如下:

def print_figure():
    for i in range(5, 0, -1):
        for count in range(i):
            print(12345, end='')
        print()

这导致:

1234512345123451234512345
12345123451234512345
123451234512345
1234512345
12345

我不是在寻求答案,只是在我可以修复的正确方向上提供一个指针。

4

3 回答 3

1

替换最后两行:

        print(12345, end='')
    print()

        print(count),
    print ''
于 2013-11-08T19:16:16.097 回答
1

你快到了;您12345一遍又一遍地打印数字,而不是使用count,它在第一个循环中从 0 到 4,在第二个循环中从 0 到 3 等。

您想打印count自己,但要么添加一个,要么调整它循环运行的范围从 1 到i + 1

def print_figure():
    for i in range(5, 0, -1):
        for count in range(1, i + 1):
            print(count, end='')
        print()

或使用:

def print_figure():
    for i in range(5, 0, -1):
        for count in range(i):
            print(count + 1, end='')
        print()

演示:

>>> def print_figure():
...     for i in range(5, 0, -1):
...         for count in range(1, i + 1):
...             print(count, end='')
...         print()
... 
>>> print_figure()
12345
1234
123
12
1

另一种方法是使用字符串'12345'并对其进行索引;'12345'[0]'1',等等:

def print_figure():
    for i in range(5, 0, -1):
        for count in range(i):
            print('12345'[count], end='')
        print()

但是你可以只使用切片并完全摆脱嵌套循环:

def print_figure():
    for i in range(5, 0, -1):
        print('12345'[:i])

因为'12345'[:3]返回字符串的前 3 个字符,printing 123

于 2013-11-08T18:49:49.093 回答
0

一种更通用的方法是在每次迭代时使用一个字符串来删除最后一项:

value = '12345'
while value:
    print value
    value = value[:-1]

好处是您可以轻松地替换12345为任何长度的任何字符串。

于 2013-11-08T19:21:39.107 回答