【问题标题】:Is there any way i can make an input line dissappear after inputing? Python [duplicate]有什么办法可以让输入行在输入后消失? Python [重复]
【发布时间】:2016-03-22 11:24:48
【问题描述】:

我正在为 2 位玩家创建一个石头、纸、剪刀游戏。但是,当第一个玩家输入石头、纸或剪刀时,我希望他们的输入消失,以便第二个玩家可以输入他们的输入。因为我不希望他们看到彼此的条目。这在 Python 3.5.0 中可行吗? 任何帮助将非常感激! 谢谢! 我不想清除整个屏幕,只需一行!

【问题讨论】:

  • 我可能会使用sys.stdout.write,如果允许输入在输入时可见,但在用户按下回车后应该消失。如果您希望将其替换为* while 用户键入 - 就像在真正的密码提示中一样 - 需要考虑 linux 和 windows 之间的差异(我还没有找到一个简单的在 linux 中无需按 enter 即可评估输入的方法 - 仅通过导入 pygame 这似乎过多。在 Windows 上,它更容易。在这种情况下,Getpass 可能是最简单的跨平台解决方案)。您的具体要求是什么?

标签: python


【解决方案1】:

您可以使用getpass,通常用于输入密码,因此用户的输入不会打印到终端。

这是在解释器中运行的示例,我在提示符下输入的文本“Rock”未显示,但在“选择”变量中可用。

>>> import getpass
>>> choice = getpass.getpass("Rock/Paper/Scissors:")
Rock/Paper/Scissors:
>>> choice
'Rock'
>>>

你想把它放在一个循环中,检查用户是否输入了一个有效的选项,所以你会有类似的东西:

import getpass

valid_options = ["Rock", "Paper", "Scissors"]
valid_choice = False
while (not valid_choice):
    choice = getpass.getpass("Rock/Paper/Scissors:")
    if (choice in valid_options):
        valid_choice = True
    else:
        print("Invalid option. Please try again")

【讨论】:

  • 我将如何将它添加到我的代码中,你能否举个例子,比如输入、石头、纸或剪刀,然后是你的功能?谢谢!
  • 我添加了一个获取用户选项并检查它是有效选项之一的示例。
  • 我输入了那个,但我得到了这个错误。:
  • 警告(来自警告模块):文件“C:\Program Files (x86)\Python 3.5\lib\getpass.py”,第 101 行 return fallback_getpass(prompt, stream) GetPassWarning: 无法控制在终端上回显。警告:密码输入可能会被回显。石头/纸/剪刀:
  • 看到这个answer - 你在使用IDLE吗?建议在 cmd.exe 或 Windows PowerShell 中运行以避免此问题(上面的代码在我的 linux 机器上运行良好)。
【解决方案2】:

您可以使用转义序列:

valid = ("rock", "paper", "scissors")
choice = input("What is your choice? ").lower()
while choice not in valid:
    print("\033[1A\033[K", end="")
    choice = input("Invalid choice.  Try again: ").lower()
print("\033[1A\033[K", end="")

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2022-12-04
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多