繁体   English   中英

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

[英]Overwrite printed line in python 3.x on mac

我正在尝试编写一个涉及使用硬币翻转,正面或反面的程序,但是这样它将打印出“正面”,然后由“尾部”代替,并继续执行直到决定答案为止。

此刻,当我运行该程序时,它每次都会在下一行打印“ heads”或“ tails”。 这发生在空闲和终端上。

我试过使用回车符(\\ r),退格键(\\ b)和sys.stdout.write()和.flush(),但是都无法正常工作,它只是继续在下一行打印。

有没有其他方法可以擦除打印的内容,或者可以使用其他软件? 这是我的代码:

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)

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")  

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM