如何替换前一行中已打印的字符

时间:2013-10-15 03:26:43

标签: python function printing replace

我正在尝试在Python中制作类似于this的游戏(在Windows上为3.3.2)。我认为大部分编程都是相当基础的,所以对我来说这对初学者来说很容易。我无法理解的是如何让一行代码在保持同一位置的同时不断被改变(我试图描述你拥有的糖果数量[如果你看到这条线仍然在同一个地方物理str变化])。我知道你必须做类似的事情:

candiesNbrDisplay = 'You have ' + str(candiesNbrOwned) + ' candies!'
candiesNbrOwned = candiesNbrOwned + 1
time.sleep( 1)

但是如何在没有this的情况下更改数字!

2 个答案:

答案 0 :(得分:0)

这适用于Unix(Mac OS X 10.8.5,Python 2.7.2):

import time
import sys

for i in xrange(1, 10):
    print "\rThe number of candies is %d and the pile is growing" % i,
    sys.stdout.flush()
    time.sleep(1)
print ""

我不知道它是否适用于Windows或Python 3。

答案 1 :(得分:0)

Jonathan建议在每行末尾使用CR。您可以通过将额外参数传递给print

来完成此操作
candies = 0
while True:
    print('You have', candies, 'candies!', end='\r')
    time.sleep(1)
    candies += 1

通常,print使用NL(\n)字符,这意味着“跳到下一行”。

但是在这里,我们告诉它使用CR(\r)代替,这意味着“回到当前行的开头”。这就是我们想要的。

不幸的是,这种技术仅适用于命令行,而不适用于IDLE。因此,您必须直接运行脚本(双击其图标)才能生效。