2017-02-04 5 views
-2

Мне нужно реализовать следующий алгоритм: если я получаю False более, что три раза, сделать continue, если это число меньше 3, попробуйте снова и снова.Python: попробуйте еще раз некоторый блок, если какое-либо условие существует

list = [1, 2, 3, 4, 5, 6, 6, 8, 8, 64, 4, 5, 6] 
result = False 
for elem in list: 
    trying = 0 
    while not result: 
     print(elem) 
     try: 
      result = elem % 2 == 0 
     except: 
      trying += 1 
      print(trying) 
      if trying == 3: 
       continue 
      else: 
       pass 

не идет в блок except. Может ли кто-нибудь объяснить, что я должен изменить, чтобы получить желание?

+2

'result = elem% 2 == 0' присваивает' False' или 'True'' result'. Это не может вызвать каких-либо исключений. Что вы ожидаете ? –

+0

Короткое слово 'elem', являющееся списком или строкой, не содержащей«% 'placeholder или что-то, что не будет генерировать исключение. – jonrsharpe

+0

@ Jean-FrançoisFabre Правильно, действительно нет причин для вашего 'try/except'. Не могли бы вы объяснить, что именно вы пытаетесь достичь? –

ответ

1

Блок except выполнен только в том случае, если в соответствующем блоке try возникает исключение.

Ваш код не содержит никаких исключений (кроме случаев, когда elem - объект, который не поддерживает оператор %, но поскольку вы используете только целые числа, этого не происходит).

Вам не нужно заявление try-except. if заявление является более подходящим:

while not result: 
    print(elem) 
    result = elem % 2 == 0 
    if not result: 
     trying += 1 
     print(trying) 
     if trying == 3: 
      continue 
     else: 
      pass 

Во-вторых, как вы использовали continue не вызывает код, чтобы сделать что-нибудь другое в else отрасли, как это в конце выполнения вашего while цикла. Возможно, вы использовали break.

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

  • Нет связанных вопросов^_^