Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 27, 2016 17:30:23

RomaNewbie
Зарегистрирован: 2016-04-14
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

Вот код, хочу чтобы было 4 попытки,как сделать эти попытки?

    t = input("Введите пароль:")
    if t!="Rose":
        response = ""
        while response!= "Rose":
            response = input("Неправильный пароль\n")

Офлайн

#2 Апрель 27, 2016 18:35:28

Lestoroer
Зарегистрирован: 2015-12-24
Сообщения: 88
Репутация: +  5  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

y = 0
while y < 4:
    t = input("Введите пароль:")
    y +=1
    if t!="Rose":
        print('Неправильный пароль, осталось попыток :', 4-y)
    else:
        print('Пароль верный, вход выполнен')
        break

Офлайн

#3 Апрель 27, 2016 20:05:44

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

for t in reversed(range(4)):
    p = input("Введите пароль:")
    if p == "Rose":
        print('Пароль верный, вход выполнен')
        break
    print('Неправильный пароль, осталось попыток :', t)
Я бы так это написал.

Офлайн

#4 Апрель 28, 2016 05:52:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

>>> t = 4
>>> while True:
...     p = input('Enter password: ')
...     if p == 'password':
...         print('Ok')
...         break
...     t -= 1
...     if t > 0:
...         print('Left', t)
...     else:
...         print('Exhausted')
...         break
... 
Enter password: a
Left 3
Enter password: b
Left 2
Enter password: c
Left 1
Enter password: password
Ok
>>>



Офлайн

#5 Апрель 28, 2016 08:14:50

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

А это вот так

for t in reversed(range(4)):
    p = input('Enter password: ')
    if p == 'password':
        print('Ok')
        break
    if t > 0:
        print('Left', t)
else:
    print('Exhausted')
или так (не люблю управляющие переменные дёргать в десяти местах)
t = 4
while t:
    p = input('Enter password: ')
    if p == 'password':
        print('Ok')
        break
    t -= 1
    if t > 0:
        print('Left', t)
else:
    print('Exhausted')

Офлайн

#6 Апрель 28, 2016 08:41:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

Shaman
А это вот так
Не, ты добавь теперь ввод имени пользователя ещё в этом же цикле. Сразу увидишь, как всё сломается.



Офлайн

#7 Апрель 28, 2016 08:55:05

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

Почему что-то должно сломаться, если проверка как была единственной, так единственной и остаётся?

for t in reversed(range(4)):
    n = input('Enter name: ')
    p = input('Enter password: ')
    if n == 'vasya' and p == 'password':
        print('Ok')
        break
    if t > 0:
        print('Left', t)
else:
    print('Exhausted')

Офлайн

#8 Апрель 28, 2016 12:21:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

Имя пользователя нужно один раз ввести, а потом пароль к уже введённому имени подбирать ограниченное число попыток. Если имя ввели пустое, то запросить его заново. Я, например, могу continue поставить без проблем на пустом имени.



Отредактировано py.user.next (Апрель 28, 2016 12:23:10)

Офлайн

#9 Апрель 28, 2016 13:26:57

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

При таком подходе имя вводится где-то за пределами цикла ввода пароля, чтобы не мешать килограммы с конфетами.

Отредактировано Shaman (Апрель 28, 2016 13:28:38)

Офлайн

#10 Апрель 28, 2016 14:40:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Как поставить количество попыток на введения пароля?

Shaman
При таком подходе имя вводится где-то за пределами цикла ввода пароля
Так, а вот если надо паузу сделать после неправильных попыток, а не выход из цикла. (Во FreeBSD такое в консоли: если неправильно вводишь несколько раз, то увеличивается пауза между неправильными вводами и становится всё дольше и дольше.) Мне вот, например, надо всего лишь break заменить на sleep().

>>> import time
>>> 
>>> t = 4
>>> while True:
...     p = input('Enter password: ')
...     if p == 'password':
...         print('Ok')
...         break
...     t -= 1
...     if t > 0:
...         print('Left', t)
...     else:
...         print('Exhausted')
...         time.sleep(5)
... 
Enter password: a
Left 3
Enter password: b
Left 2
Enter password: c
Left 1
Enter password: d
Exhausted
Enter password: a
Exhausted
Enter password: b
Exhausted
Enter password: password
Ok
>>>



Отредактировано py.user.next (Апрель 28, 2016 14:44:08)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version