Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 2
  2   
								
								Например мне нужно ввести пароль 3 раза я использую for attemps_left in range(3):, потом идёт ввод с клавиатуры, сравнение с числом в памяти, и если пароль не правильный всё это повторяется 3 раза и если  пользователь не ввёл правильный пароль программа пишет : Access is denied и я хочу чтоб изменялось количество попыток. 3 , 2 , 1 
for attemps_left in range(3):
	a = (input(“pls enter password: (Вот тут должно писать остаток попыток) ”))
Отредактировано EpicMandM (Авг. 16, 2016 19:12:39)
Офлайн
 
							 
							
						 103
  103   
								
								for attemps_left in range(3 ,0, -1): a = input("text: ({}) ".format(attemps_left))
for attemps_left in range(3): a = input("text: (%d) " % (3 - attemps_left))
Отредактировано terabayt (Авг. 16, 2016 19:16:45)
Офлайн
 
							 7
  7   
								
								Ещё можно воспользоваться готовыми решениями, типа такого декоратора:
https://pypi.python.org/pypi/retrying
Ну или вот даже самому можно сделать примитивный декоратор:
def retry(number): def wrap(f, number=number): def wrapped_f(*args, number=number): if not f(*args): number -= 1 if number <= 0: print('Sorry, you lose all attempts') return False print('Try again. %d tries left' % (number,)) wrapped_f(*args, number=number) return wrapped_f return wrap CORRECT_INPUT = 'abc' @retry(3) def get_input(prompt): user_input = input(prompt) return user_input == CORRECT_INPUT get_input('Enter password: ')
Отредактировано Master_Sergius (Авг. 16, 2016 20:57:48)
Офлайн
 
							 
							
						 103
  103   
								
								Master_Sergius
def retry(number): def wrap(f, number=number): def wrapped_f(*args, number=number): if not f(*args): number -= 1 if number <= 0: print('Sorry, you lose all attempts') return False print('Try again. %d tries left' % (number,)) wrapped_f(*args, number=number) return wrapped_f return wrap CORRECT_INPUT = 'abc' @retry(1234) def get_input(prompt): return 1 == 0 get_input('Enter password: ')
Отредактировано terabayt (Авг. 16, 2016 21:43:13)
Офлайн
 
							 857
  857   
								
								>>> def prompt(answer, tries, inp_str='Enter: ', left_fmt='Left {}'): ... for i in range(tries): ... s = input(inp_str) ... if s == answer: ... return True ... left = tries - i - 1 ... if left > 0: ... print(left_fmt.format(left)) ... return False ... >>> res = prompt('z', 3) Enter: x Left 2 Enter: y Left 1 Enter: z >>> res True >>>
Отредактировано py.user.next (Авг. 17, 2016 02:14:52)
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)