删除已经用Python打印

时间:2010-06-28 21:18:33

标签: python printing python-3.x

对于练习,我正在尝试用Python做一些事情。我决定制作一个简单的刽子手游戏 - 我没有制作GUI。游戏将以简单的输入()开始。现在,除了要求输入之外,我还想删除隐藏的单词。我尝试过使用\ b(退格符),但它不起作用。类似的东西:

word = input("Your word: ")
for i in range(len(word) + 12):
    print("\b")

现在,打印反冲字符应该删除输入和“你的单词”,但它没有做任何事情。如果我在IDLE中这样做,我会得到正方形,如果我通过点击打开它,我什么也得不到。

如何做到这一点?我担心我的问题不太清楚,但我希望你能看到我的意思。 :)

4 个答案:

答案 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