对于练习,我正在尝试用Python做一些事情。我决定制作一个简单的刽子手游戏 - 我没有制作GUI。游戏将以简单的输入()开始。现在,除了要求输入之外,我还想删除隐藏的单词。我尝试过使用\ b(退格符),但它不起作用。类似的东西:
word = input("Your word: ")
for i in range(len(word) + 12):
print("\b")
现在,打印反冲字符应该删除输入和“你的单词”,但它没有做任何事情。如果我在IDLE中这样做,我会得到正方形,如果我通过点击打开它,我什么也得不到。
如何做到这一点?我担心我的问题不太清楚,但我希望你能看到我的意思。 :)
答案 0 :(得分:4)
\b
不会删除光标前的字符,只是将光标向左移动一列。如果您想要文本输入而不回显字符,请查看getpass
。
答案 1 :(得分:2)
我认为输入单词的玩家想要确定他们输入的是正确的,所以你可能想要显示这个单词,因为他们正在键入它?
打印足够的\n
以便在完成后将其移出屏幕或发出清晰的屏幕命令怎么样?
你提到这是一个简单的游戏,所以一个简单的解决方案似乎很合适。
[编辑] 这是一个简单的例程,可以在任何平台上清除控制台(取自here):
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
答案 2 :(得分:2)
word = raw_input("Your word: ")
import sys
sys.stdout.write("\x1b[1A" + 25*" " + "\n")
这将替换用25个空格打印的最后一行。
答案 3 :(得分:1)
我认为你的部分问题是input
正在回显终止你的单词条目的Enter。你的退格在另一条线上,我认为它们不会回到上一行。我好像回忆起一个关于如何防止这种情况的问题,但我现在无法找到它。
此外,我相信默认情况下,print
会在每次调用时输出换行符,因此每个退格键都在其自己的行上。您可以使用end=''
参数更改此内容。
编辑:我发现了我正在考虑的问题,但看起来并没有任何帮助。如果您愿意,可以查看它:Python input that ends without showing a newline