如何在python中水平打印“tight”点?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我有一个程序将其进度打印到控制台。它每20步打印一次步数,如10 20 30等,但在此范围内,它会打印一个点。这是使用print语句在末尾用逗号打印的

        if epoch % 10 == 0:
            print epoch,
        else:
            print ".",

不幸的是,我注意到这些点是彼此分开打印的,如下所示:

0 . . . . . . . . . 10 . . . . . . . . . 20 . . . . . . . . . 30

我希望这更紧,如下:

0.........10.........20.........30

在Visual Basic语言中,如果我们在print语句的末尾添加分号而不是逗号,我们可以获得此表单。是否有类似的方法在Python中执行此操作,或者通过演练获得更紧密的输出?

提前致谢...

---编辑---对所有回复的人表示感谢和敬意,我注意到他们中的一些人认为“时代”的变化是及时发生的。实际上,它在完成一些迭代后发生,并且可能需要从几分之一秒到几分钟。但是,非常感谢所有贡献者。

提问于
用户回答回答于

如果您想要更好地控制格式,那么您需要使用以下任一方法:

import sys
sys.stdout.write('.')
sys.stdout.flush()  # otherwise won't show until some newline printed

..而不是print,或使用Python 3打印功能。这可以在以后的Python 2.x版本中导入,如下所示:

from __future__ import print_function
print('.', end='')

在Python 3中,您可以传递关键字参数flush

print('.', end='', flush=True)

其效果与上述两行相同sys.stdout

用户回答回答于
import itertools
import sys
import time


counter = itertools.count()


def special_print(value):
    sys.stdout.write(value)
    sys.stdout.flush()


while True:
    time.sleep(0.1)
    i = next(counter)
    if i % 10 == 0:
        special_print(str(i))
    else:
        special_print('.')

扫码关注云+社区

领取腾讯云代金券