在mac上的python 3.x中覆盖打印行

时间:2015-02-14 11:01:21

标签: python macos carriage-return sys

我试图编写一个涉及使用硬币翻盖,头部或尾部的程序,但是它会打印出来的头部和头部。然后被“尾巴”替换为“'并继续这样做,直到它决定答案。

目前,当我运行该程序时,它会打印出' head'或者'尾巴'每次都在下一行。这在空闲和终端都会发生。

我尝试过使用回车符(\ r),退格键(\ b)和sys.stdout.write()以及.flush(),但两者都没有工作,它只是在下一行继续打印。 / p>

是否有其他方法可以删除已打印的内容,还是有其他可以使用的软件? 这是我的代码:

import time
import random

offset = random.randint(0,1)

for i in range (0, 20+offset):
    if i % 2 == 0:
        print("Heads")
    else:
        print("Tails")
    print("\r")
    time.sleep(0.1)

1 个答案:

答案 0 :(得分:4)

print在末尾写入\n个字符,因此如果要保持同一行,则需要修改它。

import time
import random

offset = random.randint(0,1)

for i in range (0, 20+offset):
    if i % 2 == 0:
        print("Heads", end='')
    else:
        print("Tails", end='')
    print("\r", end='')
    time.sleep(0.1)

编辑:这只适用于python 3,如果你想在python 2中使用它,那么你需要写入sys.stdout

import time
import random
import sys  

offset = random.randint(0,1)

for i in xrange(0, 20+offset):
    if i % 2 == 0:
        sys.stdout.write("Heads")
    else:
        sys.stdout.write("Tails")
    time.sleep(0.1)
    sys.stdout.flush()  
    sys.stdout.write("\r")  

我知道这可能不是最快的实现,但是它可行,我可以在以后输入更快的方法