Форум сайта python.su
0
Вот код, хочу чтобы было 4 попытки,как сделать эти попытки?
t = input("Введите пароль:") if t!="Rose": response = "" while response!= "Rose": response = input("Неправильный пароль\n")
Офлайн
5
y = 0 while y < 4: t = input("Введите пароль:") y +=1 if t!="Rose": print('Неправильный пароль, осталось попыток :', 4-y) else: print('Пароль верный, вход выполнен') break
Офлайн
88
for t in reversed(range(4)): p = input("Введите пароль:") if p == "Rose": print('Пароль верный, вход выполнен') break print('Неправильный пароль, осталось попыток :', t)
Офлайн
857
>>> 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 >>>
Офлайн
88
А это вот так
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')
Офлайн
857
ShamanНе, ты добавь теперь ввод имени пользователя ещё в этом же цикле. Сразу увидишь, как всё сломается.
А это вот так
Офлайн
88
Почему что-то должно сломаться, если проверка как была единственной, так единственной и остаётся?
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')
Офлайн
857
Имя пользователя нужно один раз ввести, а потом пароль к уже введённому имени подбирать ограниченное число попыток. Если имя ввели пустое, то запросить его заново. Я, например, могу continue поставить без проблем на пустом имени.
Отредактировано py.user.next (Апрель 28, 2016 12:23:10)
Офлайн
88
При таком подходе имя вводится где-то за пределами цикла ввода пароля, чтобы не мешать килограммы с конфетами.
Отредактировано Shaman (Апрель 28, 2016 13:28:38)
Офлайн
857
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)
Офлайн