繁体   English   中英

python`print`在循环中不起作用

[英]python `print` does not work in loop

我在一起有多个循环,在最内循环中有一个睡眠。 例如:

from time import sleep

for i in range(10):
    print i,
    for j in range(-5,5):
        if j > 0:
            print '.',
        else:
            print 'D',
        sleep(1)
    print ''

如果你运行代码,你可能希望在D睡眠1秒和另一个D之后得到i值,然后再次睡觉直到结束。

但结果是差异,它等待10秒并打印整个0 DDDDDD . . . . 0 DDDDDD . . . . 并等待再次打印下一行。

我发现打印结束时的逗号导致了这个问题。 我该如何解决?

由于存在逗号,输出缓冲直到\\n

您应该在每次打印后刷新stdout或使用sys.stdout.write和flush buffer。

定义您的打印方法:

import sys

def my_print(text):
    sys.stdout.write(str(text))
    sys.stdout.flush()

并在行尾打印\\n

使用print <something>,的问题是,只有在准备好打印结果id时才进行缓冲和打印。

你可以使用print_function__future__来解决它(它也将符合Python 3):

from __future__ import print_function
from time import sleep
import sys

for i in range(10):
    print(i, end='')
    for j in range(-5,5):
        if j > 0:
            print('.', end='')
        else:
            print('D', end='')
        sys.stdout.flush()
        sleep(1)            
    print('')

我建议在导入后用下面的coe覆盖打印

import sys
def print_msg(*args,end='\n'):
    for item in args:
        sys.stdout.write(str(item)+' ')
    sys.stdout.write(end)
    sys.stdout.flush()

print = print_msg

暂无
暂无

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

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