#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 является техническим aforeach loop
, вы должны изменить свой цикл на awhile 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
, она не будет увеличена.