Python3跳过流检查

时间:2016-11-29 00:14:07

标签: python python-3.5 flow-control

我在使用python3持久性密码锁时遇到了一些麻烦。它按预期/期望存储和检索密码,但我决定插入"退出"检查,如果输入的信息不正确,您可以返回并重新输入。它似乎是在没有容易识别的原因的情况下跳过此检查。

elif choice == 2:
  conti = False
  while conti != True:
    print('Enter an account and password to store')
    acc = input('Account: ')
    apass = input('Password: ')
    print('Account: ' + acc + '\n' + 'Password: ' + apass)
    print('Correct?')
    corr = input(': ')
    corr.lower()
    if corr == 'yes' or 'ye' or 'y':
      print('Making Changes persistent')
      # Shelve Stuff
      conti = True
      break
    else:
      print('Please make appropriate changes.')
      continue

当我运行此代码时,无论corr变量是什么,它都会使更改持久化。这不是我想要的。我尝试在elif语句中明确说明没有选项,它也跳过了那些选项。是多个'还是'抛弃它的说法或者我还应该注意其他事情吗?

1 个答案:

答案 0 :(得分:1)

这条线没有做到你所希望的:

 if corr == 'yes' or 'y' or 'y':

这意味着"等于'是'?不行!那么,价值是' y'真正?它是!让我们这样做!"请注意,它没有检查corr是否等于' y'只是字符串' y'是Truthy。

最简单的方法是:

if corr == 'yes' or corr == 'y':

但您也可以这样做:

if corr in ['yes', 'y', 'Y', 'YES']:

或类似的内容以涵盖更多选项