为什么这个循环没有停止?

时间:2017-10-19 14:19:14

标签: python loops

while True:
    password=input("Enter a password. Make sure it:\nContains at least 1 capital letter\nContains at least 6 letters\n")
    time.sleep(0.35)
    if len(password)>5 and password.islower=="False":
        break

你怎么做这个停止。如果它有一个大写字母且超过6个字符,我希望它停止。

3 个答案:

答案 0 :(得分:5)

这里:

password.islower=="False"

首先,你没有调用方法 - 你需要添加parens - 所以你比较一个方法和一个字符串。它永远不会是真的......

然后,一旦解决了这个问题:

password.islower() == "False"

你最终将布尔值与字符串进行比较。它也永远不会是真的,你想与布尔False(没有引号)进行比较:

password.islower() == False

最后一点,这通常是拼写:

not passsword.islower()

答案 1 :(得分:1)

if len(password)>5 and not password.islower():

if len(password)>5 and password.islower() == False:

会起作用。

答案 2 :(得分:-1)

因为islower不是属性,而是一个函数。试试这个:

not password.islower()

此外,如@Dan所述,您将islower()函数(布尔值)的结果与字符串 "False"进行比较。在Python中,可以直接使用布尔结果,如上所示,而不将其与字符串"False"(这是错误的)或布尔值False(这是奇怪且危险的)进行比较。如果密码包含大写字符,则islower()==False将为True