2017-06-21 68 views
-2
Passlimit = 10 

while Passlimit: 
    Passinput = input("how long do you want you random generate password to be? NO LONGER THAN 10 CHARACTERS: ") 
    if Passinput <= Passlimit: 
     print("NUMBER SELECTED") 
    else: 
     print("Invalid number, NO LONGER THAN 10 CHARACTERS") 

当我运行这段代码的if语句的作品,但它只是重复回输入密码循环不断重复

+2

你没有'break' - 也可以修正你的缩进。 – Goralight

+0

从文本中不清楚用户是否应该传递一个字符串(密码)或数字(生成的密码应具有的字符数) – lesingerouge

+0

当您使用循环时,必须使用** break **条件。在你的情况下,你已经使用** if ... else **,所以它会在无限中询问你输入,更好的是出现** break **像** exit **关键字发生。 – Sanket

回答

0

enter image description here

Passlimit的初始值是9 你有Passlimit变量引用整数对象值为10. while循环仅在while关键字之后的表达式评估Fasle时终止。 你的情况

while Passlimit: 
    #body 

值Passlimit被引用为10这是真的。 python中所有非零整数都是真的。并且Passlimit的值始终为10,因此while循环将永远运行。 要终止while循环,Passlimit的值应该等于零。

while Passlimit>0: 
    # your code 

    # decrement value of Passlimit 
    Passlimit-=1 
+0

@Sanket它适用于我我已附加截图。 –

+1

检查负值,它会无限地询问 – Sanket

+0

谢谢我了解并编辑了答案。但在这种情况下,当Passlimit = 0时,循环将终止并且永远不会成为负数。 –