Python:小而循环错误

0 python syntax loops conditional-statements

我是python和编程的新手,我遇到了这个问题,同时摆弄了一个简单的while循环.循环接受输入以评估两个可能的密码:

    print('Enter password')
    passEntry = input()

    while passEntry !='juice' or 'juice2':
      print('Access Denied')
      passEntry = input()
      print(passEntry)

    print('Access Granted')
Run Code Online (Sandbox Code Playgroud)

它似乎不接受果汁或果汁2有效.

也只是接受一个密码,如:

    while passEntry != 'juice' :
Run Code Online (Sandbox Code Playgroud)

不起作用,而:

    while passEntry !='juice' :
Run Code Online (Sandbox Code Playgroud)

工作良好.我似乎无法找到这些问题的原因(后两者之间的区别是=之后的空格).任何帮助表示赞赏.

Emi*_*Sit 7

首先,您应该使用Python的getpass模块来获取可移植的密码.例如:

import getpass
passEntry = getpass.getpass("Enter password")
Run Code Online (Sandbox Code Playgroud)

然后,您编写的代码用于保护while循环:

while passEntry != 'juice' or 'juice2':
Run Code Online (Sandbox Code Playgroud)

由Python解释器解释为具有保护表达式的while循环

(passEntry != 'juice') or 'juice2'
Run Code Online (Sandbox Code Playgroud)

这总是正确的,因为无论是否passEntry等于"果汁","juice2"在被解释为布尔值时将被视为真.

在Python中,测试成员资格的最佳方法是使用in运算符,该运算符适用于各种数据类型,例如列表或集合或元组.例如,一个列表:

while passEntry not in ['juice', 'juice2']:
Run Code Online (Sandbox Code Playgroud)