Python:打印而不覆盖打印行

时间:2015-09-07 12:22:28

标签: python loops for-loop

我有

for i in range(0, 11): print i, "\n", i

我希望我的python程序以这种方式为每个for循环打印

第一圈:

1
1

第二循环:

1
2
2
1

第3次循环:

1
2
3
3
2
1

我尝试过使用\ r \ n或\ 033 [1A但它们只是覆盖了上一行。有没有办法可以“推”输出线,所以我不会覆盖它?

6 个答案:

答案 0 :(得分:5)

一种方法,

def foo(x, limit):
        if x < limit :
                print x
                foo(x + 1, limit)
                print x

foo(1, 11)

答案 1 :(得分:1)

当你正在尝试时,不能在1 for循环中执行此操作。

正如我所说,你可以通过使用列表

这样做
>>> l1 = []
>>> l2 = []
>>> for i in range(0, 11):
...   l1.append(i)
...   l2 = [i] + l2
>>> l1.extend(l2)
>>> for i in l1:
...  print i

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

答案 2 :(得分:1)

两个列表生成器的连接。

>>> ladder = [x for x in range(5)] + [x for x in range(5,-1,-1)]
>>> ladder
[0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0]
>>> for x in ladder:
...     print x
... 
0
1
2
3
4
5
4
3
2
1
0
>>> 

答案 3 :(得分:0)

解决此问题的方法之一

def two_side_print(start, end):
    text = [str(i) for i in range(start,end)]
    print '\n'.join(text), '\n', '\n'.join(reversed(text))

two_side_print(1, 11)

答案 4 :(得分:0)

另一种选择是将打印值保存在列表中,并在每次循环迭代中以相反的顺序打印该列表。

我的建议:

l = []

for i in range(1, 5):
    print 'Loop '+str(i) # This is to ease seeing the printing results

    for val in l:
        print val

    print i
    l.insert(len(l),i)

    for val in reversed(l):
        print val

循环的输出从0迭代到5

Loop 1
1
1
Loop 2
1
2
2
1
Loop 3
1
2
3
3
2
1
Loop 4
1
2
3
4
4
3
2
1

我希望这就是你要找的东西。

答案 5 :(得分:0)

您可以使用递归函数来帮助:

index do
 ... your code here ...
end

用法:

def print_both_ways(start, end):
    print(start)
    if start != end:
        print_both_ways(start+1, end)

    print(start)