在Python中删除已打印内容
为了练习,我在尝试用Python做一些事情。我决定做一个简单的猜单词游戏——我不打算做图形界面。游戏开始时会有一个简单的输入框。现在,我想在下一行除了询问输入外,还想删除隐藏的单词。我试过使用\b(退格符),但没有成功。就像这样:
word = input("Your word: ")
for i in range(len(word) + 12):
print("\b")
现在,打印这个退格符应该能删除输入和“你的单词”,但它没有任何效果。如果我在IDLE中这样做,我会看到方块,如果我直接点击打开,就什么都没有。
我该怎么做呢?我担心我没有把问题说清楚,但我希望你能明白我的意思。:)
4 个回答
2
word = raw_input("Your word: ")
import sys
sys.stdout.write("\x1b[1A" + 25*" " + "\n")
这段代码会用25个空格替换掉最后一行打印的内容。
4
\b
并不会删除光标前面的字符,它只是把光标向左移动了一格。如果你想输入文本但不想显示输入的字符,可以看看 getpass
这个工具。
2
我想玩家在输入单词的时候,肯定希望确认自己输入的是否正确,所以你可能想在他们输入的时候显示出这个单词,对吧?
那你可以在他们输入完成后,打印足够的\n
来把它移出屏幕,或者发出一个清屏的命令?
你提到这是一个简单的游戏,所以一个简单的解决方案似乎很合适。
[编辑] 这里有一个简单的代码,可以在几乎所有平台上清除控制台(来自这里):
def clearscreen(numlines=100):
"""Clear the console.
numlines is an optional argument used only as a fall-back.
"""
import os
if os.name == "posix":
# Unix/Linux/MacOS/BSD/etc
os.system('clear')
elif os.name in ("nt", "dos", "ce"):
# DOS/Windows
os.system('CLS')
else:
# Fallback for other operating systems.
print '\n' * numlines