在一行中动态打印

在一行中动态打印

我想做几个给出标准输出的声明,而不会在语句之间看到换行符。

具体来说,假设我有:

for item in range(1,100):
    print item

结果是:

1234...

如何使它看起来像:

1 2 3 4 5 ...

更好的是,是否可以打印单个数字?过关最后一个数字,所以一次屏幕上只有一个数字?


慕田峪7331174
浏览 552回答 3
3回答

MMTTMM

变化print item致:print item,在Python2.7中print(item, end=" ")在Python 3中如果要动态打印数据,请使用以下语法:print(item, sep=' ', end='', flush=True)在Python 3中

动漫人物

顺便说一下.如何每次刷新它,以便它打印在一个地方,只需改变数字。一般来说,这样做的方法是终端控制码..这是一个特别简单的例子,您只需要一个特殊字符: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直接使用文件对象。

翻过高山走不出你

使用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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python