输入验证限制为“是”或“否”

2024-04-18 01:01:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试进行输入验证,限制为只允许“y/y”或“n/n”

在执行两个这样的检查时,我无法关闭while循环。(即,即使输入“Y/Y”或“N/N”,循环仍将继续。)

print('Would you like to play a game?')
play_a_game = input()
while play_a_game.lower() != 'y' or play_a_game.lower() != 'n':
    print(play_a_game)
    print('Invalid input')
    print('Would you like to play a game?')
    play_a_game = input()

但是,如果我将while语句限制为一个检查,则循环可以正常退出(即,如果输入“Y/Y”,则循环将关闭)

print('Would you like to play a game?')
play_a_game = input()
while play_a_game.lower() != 'y':
    print(play_a_game)
    print('Invalid input')
    print('Would you like to play a game?')
    play_a_game = input()

2条回答

问题在于or操作。让我们做一张真值表

^{tb1}$

看看为什么现在会这样

您实际需要的:

while play_a_game.lower() != 'y' and play_a_game.lower() != 'n'
^{tb2}$

这相当于

while play_a_game.lower() not in ('y', 'n')
^{tb3}$

如上所述,真值表将始终计算为真值,并使您处于循环中。当询问用户是否希望继续玩游戏时,请考虑限制对“N”或“N”的响应。p>

例如,当((继续玩!=“N”)和(继续玩!=“N”):

相关问题 更多 >

    热门问题