仅打印 Python 中的有效输入

Print only a valid input in Python

如何修复以下代码以仅打印有效输入:

x = input("Y/N? ")
while x not in ["Y","N"]:
    x = input("Y/N? ")

如果我输入了无效的输入,这个会打印

 Y/N? what
 Y/N? is
 Y/N? Y

我不想打印 whatis 等无效输入,而是只想打印 Y.

您的代码实际上没有打印任何内容。您在终端 window 中看到的所有内容都是您要求用户输入的内容。当您在 python 中调用 input("Message") 时,消息会打印到终端并等待用户输入

input("Please enter Y/N: ")

> [input]: Please enter Y/N: ...

此时,如果您键入“what”,您的 for 循环会检查它是否在您提供的列表中。由于它不在那里,它会再次打印输入消息。在您的情况下,它会在您输入正确的值之前打印消息 3 次。

要看到程序成功,你可以在最后打印一些东西

x = input("Y/N? ")

while x not in ["Y","N"]:
    x = input("Please enter Y/N: ")
print("YaY, you finally entered:", x)

将输出:

> [input] Please enter Y/N: what
> [input] Please enter Y/N: is
> [input] Please enter Y/N: Y
> [output] YaY, you finally entered: Y

它不是打印输入,而是用户输入的内容。如果你想要它在单独的行中,请在 ? 之后添加 \n 。在字符串中。 如果你想让它打印值,只有它们是正确的,你可以使用布尔值并不断检查它是否已更新。

bool = False
while not bool:
   x = input("Y/N?\n")
   if x.lower() == "y" or x.lower() == "n":
      bool = True
#do whatever else you want