为什么这个循环从不接受第一轮输入?

时间:2015-01-28 20:28:48

标签: loops python-3.x

我正在创建一个Caesar Cipher,它完全可以工作但是有一个小bug。我创建了一个代码片段,以便不发布整个算法。我的问题是,当它运行并输入1或2时它将不接受您的输入,但在第二次运行时它将会。我完全不知道为什么。

Choice = input('Encrypt or Decrypt? \n\nEnter 1 for Encrytion \nEnter 2 for Decrytion')

while Choice != '1' or Choice != '2':
    print('You must enter 1 or 2')
    Choice = input('Encrypt or Decrypt? \n\nEnter 1 for Encrytion \nEnter 2 for Decrytion')

    if Choice == '1':
        print('bananas')
        break

    if Choice == '2':
        print ('cake')
        break

1 个答案:

答案 0 :(得分:0)

这将永远是真的:

while Choice != '1' or Choice != '2':

假设Choice为'1';那将是:

while '1' != '1' or '1' != '2':

是:

while False or True:

是:

while True:

对于每一个可能的Choice。你想要:

while Choice != '1' and Choice != '2':

实际上,您希望将Choice = input(...置于一个循环中,并且只在Choice == '1' or Choice == '2'时突破该循环。比较也必须在循环外完成。