Можно не увеличивать количество в цикле — Python

#python

Вопрос:

можно не увеличивать счетчик в цикле for в случае возникновения ошибки, как в этом примере

 for i in range(10):  try:  print(i)  except: # if and error happen in i == 5 the next iteration will be 5 not 6   pass  

Я хочу повторить ту же итерацию, когда произойдет ошибка. И заранее спасибо.

Комментарии:

1. Не используйте range() , если вы хотите больше контролировать, как он увеличивается.

2. Поскольку a for loop в python является техническим a foreach loop , вы должны изменить свой цикл на a while loop , чтобы иметь больше контроля.

3. Это не обязательно, я использую range() это просто пример, это может быть список.

4. Я спрашиваю, есть ли способ войти в цикл

5. Вам нужно, чтобы он выполнялся только 10 несколько раз, включая ошибки, или повторять каждую итерацию до тех пор, пока он не выдаст ошибку?

Ответ №1:

При использовании for...in невозможно избежать перехода к следующему элементу в итерации, когда цикл повторяется.

Вы можете использовать вложенный цикл, чтобы продолжать попытки с тем же значением i , пока не получите ошибку:

 for i in range(10):  while True:  try:  print(i)  break  except:  pass  

Ответ №2:

Может быть, завернуть все в while петлю:

 for i in range(10):  while True  try:  # whatever you have to do  print(i)  break  except:   pass  

Ответ №3:

Поскольку for цикл Python технически является foreach циклом, вы должны использовать while его вместо for того, чтобы для большего контроля.

 i = 0 while ilt;10:  try:  #Do stuf  i  = 1  except:  pass  

Если ошибка произойдет раньше i = 1 , она не будет увеличена.