Python:小while循环错误



我是python和编程新手,在摆弄一个简单的while循环时遇到了这个问题。循环接受输入来计算两个可能的密码:

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

它似乎不接受juice或juice2是有效的。

也只接受一个密码,如:

    while passEntry != 'juice' :

将不工作,而:

    while passEntry !='juice' :

工作好。我似乎找不到这些问题的原因(后两者之间的唯一区别是=后的空间)。

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

import getpass
passEntry = getpass.getpass("Enter password")

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

while passEntry != 'juice' or 'juice2':

被Python解释器解释为带有保护表达式

的while循环。
(passEntry != 'juice') or 'juice2'

这总是为真,因为无论passEntry是否等于"juice", "juice2"在解释为布尔值时将被视为真。

在Python中,测试成员关系的最佳方法是使用in操作符,该操作符适用于各种数据类型,如列表、集合或元组。例如,列表:

while passEntry not in ['juice', 'juice2']:

可以使用

while passEntry not in ['juice' ,'juice2']:

如何:

while passEntry !='juice' and passEntry!= 'juice2':

和使用raw_input()代替input() ?

input()将输入当作Python代码计算。

passEntry !='juice' or 'juice2'表示(pass != 'juice') or ('juice2')"juice2"是非空字符串,所以它总是为真。因此,你的条件总是为真。

你想做passEntry != 'juice' and passEntry != 'juice2',或者更漂亮的passEntry not in ('juice', 'juice2')

这样行吗?

while passEntry !='juice' and passEntry !='juice2':

你的错误在于你写while语句的方式。

while passEntry !='juice' or 'juice2':

当python解释器读取该行时,该行将始终为真。而不是:

passEntry = input()

使用:

passEntry = raw_input()

(除非你正在使用Python 3)

Python 2中的input计算你的输入。

正确的代码是:

print('Enter password')
passEntry = raw_input()
while passEntry != 'juice' and passEntry != 'juice2':
    print('Access Denied')
    passEntry = raw_input()
    print(passEntry)
print('Access Granted')

相关内容

  • 没有找到相关文章

最新更新