2016-11-04 49 views
0

我正在嘗試以下問題:如何在Python中循環時使用「in」運算符的字母表?

網站要求用戶輸入用戶名和密碼進行註冊。

編寫一個程序來檢查用戶輸入的密碼的有效性。

  • 以下是用於檢查密碼的標準:
    1. 至少1 [AZ]
    2. 至少1之間[0-9]
    3. 至少1個字母之間數之間函[ 6
    4. 最大長度○:從[$#@]
    5. 交易密碼的最小長度AZ]
    6. 至少1個字符˚F交易密碼:12

你的程序應該接受逗號的序列分開的密碼,並且將根據上述標準檢查。符合標準的密碼將被打印,每個密碼都以逗號分隔。

  • 實施例如果下面的密碼作爲輸入提供給程序: ABd1234 @ 1,F1#,2w3E *,2We3345然後,程序的輸出應 是:ABd1234 @ 1

但是我的Python代碼:

values=input("Enter the set of passwords :") 
list1=[] 
list1=values.split(',') 
num1=0 
num2=0 
num3=0 
num4=0 
for i in list1: 
    num1=len(i) 
    if(num1>=6 and num1<=12): 
     for z in i: 
      if (z.isupper()): 
       num1=1 
      if(z.islower()): 
       num2=1 
      if(z.isdigit()): 
       num3=1 
      if(z in ('#','$','@')) : 
       print(z) 
       num4=1 
    if(num1+num2+num3+num4==4): 
     print(i) 
    else: 
     print("passkey failed") 

爲什麼我收到的最後一個密鑰是正確的,儘管不及格的標準。

+0

您是否嘗試過調試嗎? – Carcigenicate

+0

是的,我確實試過調試,我正在學習這種語言作爲一個新手。我現在發現我的錯誤,謝謝你的時間。 –

回答

0

發生這種情況是因爲您的計數器永遠不會遞增。在處理完第一個正確的密鑰後,所有密鑰的值都將爲1

因此,後續運行將成功完成最後的if測試。

更改代碼重新初始化循環:

for i in list1: 
    num1 = len(i) 
    num2 = num3 = num4 = 0 
    # rest stays the same 
+0

謝謝吉姆,對我來說太愚蠢了。新手到編碼。 –