在 mac 上覆盖 python 3.x 中的打印行
Overwrite printed line in python 3.x on mac
我正在尝试编写一个涉及使用抛硬币、正面或反面的程序,但它会打印 'heads' 然后被 'tails' 替换并继续这样做直到它决定一个答案。
目前,当我 运行 程序时,它每次都会在下一行打印 'heads' 或 'tails'。这在空闲和终端上都会发生。
我试过使用回车 return (\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")
我知道这可能不是最快的实现,但它有效,我可以稍后输入更快的方法
我正在尝试编写一个涉及使用抛硬币、正面或反面的程序,但它会打印 'heads' 然后被 'tails' 替换并继续这样做直到它决定一个答案。
目前,当我 运行 程序时,它每次都会在下一行打印 'heads' 或 'tails'。这在空闲和终端上都会发生。
我试过使用回车 return (\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")
我知道这可能不是最快的实现,但它有效,我可以稍后输入更快的方法