使循环一次只打印一个值[重复]

Posted

技术标签:

【中文标题】使循环一次只打印一个值[重复]【英文标题】:Make loop only print a single value at a time [duplicate] 【发布时间】:2018-06-05 14:58:49 【问题描述】:

如何制作:

c=5
for i in range(10):
    print(c)
    c+=1

这样就可以代替像这样的多行打印:

5
6
7
8
9
10
11
12
13
14

在每个循环中它都会去:

5 

然后当它再次循环时,它将覆盖现有行:

6

我该怎么做?

【问题讨论】:

如果您想暂停和恢复该功能,请使用yield。但它不会像“在每个循环中都会打印”,而是“每次调用生成器都会恢复循环”。 @Nishant 你能举个例子吗? 听起来你在谈论覆盖一行的输出。在这种情况下,请查看 curses 库之类的内容:docs.python.org/3/howto/curses.html 您要覆盖现有行吗?如果是这样,您需要修改问题。 @jrd1 是的,我想在每个循环上打印单个数字。当我尝试安装 curses 时,它没有得到任何模块:显然“没有直接的 Python for Windows 端口的 curses 存在。” 【参考方案1】:

python 3.3,你可以像下面这样操作

print(c , end="\r", flush=True)

【讨论】:

这为我打印了 14 哈 @geeg 我已经提到上述方法仅适用于 python 3.3。请检查您的 python 版本。 我使用 Python 3.6.3。 3.3 不是较旧的 python 版本吗?我想降级可能会导致其他库出现问题。 我也为python 3.6.1测试了上面的代码 我认为您应该清楚地强调这仅在 Python 3.3 中有效,因为当您看到在 Python3.3 中有效时,您会立即认为这将在更高版本中有效。【参考方案2】:

您可以使用回车 ("\r") 来解决问题:

import time

c = 5
for i in range(10):
    print(c, end='\r')
    c += 1
    time.sleep(1)

【讨论】:

【参考方案3】:

要打印末尾带有空格而不是换行符的文本,您可以使用end 参数。

print("text", end=" ")

在 python2 中,这可以通过尾随逗号来实现:

print "text",

例如,

c = 5
for i in range(10):
    print c,
    c += 1

【讨论】:

我认为这不是问题所要求的。 请随时edit 更新回复

以上是关于使循环一次只打印一个值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

一次只执行几个线程[重复]

python循环控制间隔。

android添加友盟自动更新的时候,如何使app打开一次只提示一次,而不是随着Acitvity的变动而一直提示。

while循环保持打印和重复,我的getch出了什么问题? [重复]

For循环正在覆盖列表中的字典值[重复]

didRangeBeacons 委托调用一次只返回一个信标