2017-06-21 69 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時,循環將終止並且永遠不會成爲負數。 –