Python嵌套用于循环向下计数

时间:2013-11-08 18:45:51

标签: python for-loop python-3.x

我有一项创建倒计时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

我不是要求答案,只是指向正确方向的指针。

3 个答案:

答案 0 :(得分: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个字符,打印123

答案 1 :(得分:1)

替换最后两行:

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

        print(count),
    print ''

答案 2 :(得分:0)

更通用的方法是在每次迭代时删除最后一项:

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

好处是你可以轻松地用任何长度的任何字符串替换12345