为了账号安全,请及时绑定邮箱和手机立即绑定

在一行中动态打印

在一行中动态打印

慕田峪7331174 2019-06-17 17:02:52
在一行中动态打印我想做几个给出标准输出的声明,而不会在语句之间看到换行符。具体来说,假设我有:for item in range(1,100):     print item结果是:1234...如何使它看起来像:1 2 3 4 5 ...更好的是,是否可以打印单个数字?过关最后一个数字,所以一次屏幕上只有一个数字?
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

变化print item致:

  • print item,

    在Python2.7中
  • print(item, end=" ")

    在Python 3中

如果要动态打印数据,请使用以下语法:

  • print(item, sep=' ', end='', flush=True)

    在Python 3中


查看完整回答
反对 回复 2019-06-17
?
动漫人物

TA贡献1815条经验 获得超10个赞

顺便说一下.如何每次刷新它,以便它打印在一个地方,只需改变数字。

一般来说,这样做的方法是终端控制码..这是一个特别简单的例子,您只需要一个特殊字符:U+000D回车,这是写好的。'\r'用Python(和许多其他语言)。下面是一个基于代码的完整示例:

from sys import stdoutfrom time import sleepfor i in range(1,20):
    stdout.write("\r%d" % i)
    stdout.flush()
    sleep(1)stdout.write("\n") # move the cursor to the next line

这方面的一些事情可能令人惊讶:

  • 这个

    \r

    放在字符串的开头,这样,当程序运行时,光标总是在数字后面。这不仅仅是化妆品:如果你反过来做的话,一些终端仿真器会感到非常困惑。
  • 如果不包括最后一行,那么在程序终止后,shell将在数字的上方打印它的提示符。
  • 这个

    stdout.flush

    在某些系统中是必要的,否则您将得不到任何输出。其他系统可能不需要它,但它不会造成任何伤害。

如果您发现这不起作用,您首先应该怀疑的是,您的终端仿真器是错误的。这个程序可以帮助你测试它。

您可以替换stdout.write带着print声明但我不想混淆print直接使用文件对象。


查看完整回答
反对 回复 2019-06-17
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

使用print item,若要使print语句省略换行符,请执行以下操作。

在Python 3中,print(item, end=" ").

如果希望在同一位置显示每个数字,请使用例如(Python2.7):

to = 20digits = len(str(to - 1))delete = "\b" * (digits + 1)for i in range(to):
    print "{0}{1:{2}}".format(delete, i, digits),

在Python 3中,它要复杂一些;这里需要刷新sys.stdout或者,在循环完成之前,它不会打印任何内容:

import sys
to = 20digits = len(str(to - 1))delete = "\b" * (digits)for i in range(to):
   print("{0}{1:{2}}".format(delete, i, digits), end="")
   sys.stdout.flush()


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 551 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信