只打印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

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

input("Please enter Y/N: ")
> [input]: Please enter Y/N: ...

在这一点上,如果您键入";什么";,您的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

这不是打印输入,而是用户输入的内容。如果您想把它放在单独的一行中,请在后面添加?在字符串中。如果您希望它打印值,只有在值正确的情况下,您才能使用布尔值并不断检查它是否已更新。

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

最新更新