Python3 跳过流程检查

Python3 Skipping Flow Check

我的 python3 永久密码储物柜有点问题。它将密码存储和检索为 expected/desired,但我决定插入一个 "backout" 检查,这样如果输入的信息不正确,您可以返回并重新输入。似乎没有容易识别的原因而跳过此检查。

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 语句中明确说明没有选项,它也跳过了这些选项。多个 'or' 语句是否将其丢弃,或者是否还有其他我应该注意的事情发生?

这一行没有达到您的预期:

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

这转换为 "is corr equal to 'yes'? It's not! So, is the value 'y' True? It is! Let's do this!" 请注意,它不检查 corr 是否等于 'y',只是检查字符串 'y' 是否为 Truthy。

普通方式是:

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

但你也可以这样做:

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

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