2016-11-04 1 views
0

Я пробую следующий вопрос:Как использовать оператор «in» для алфавитов во время цикла в python?

Веб-сайт требует, чтобы пользователи вводили имя пользователя и пароль для регистрации.

Напишите программу для проверки правильности ввода пароля пользователями.

  • Ниже приведены критерии для проверки пароля:
    1. По крайней мере, 1 письмо между [AZ]
    2. По крайней мере, 1 номер между [0-9]
    3. По крайней мере, 1 буквой между [ AZ]
    4. по крайней мере, один символ из [$ # @]
    5. Минимальная длина пароля сделки: 6
    6. Максимальная длина O е транзакции Пароль: 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

yes Я попытался отлаживать, я изучаю этот язык как новичок. Теперь я нашел свою ошибку, спасибо за ваше время. –

ответ

0

Это происходит из-за того, что ваши счетчики никогда не получают деинструментации. После обработки первого правильного ключа доступа все будут иметь значение 1.

Последующие прогоны преуспеют в финале if тест исключительно из-за этого.

Изменить код для повторной инициализации внутри цикла:

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

Спасибо Джим, так глупо от меня. новичка для кодирования. –

Смежные вопросы