@bituke

Как продолжать цикл, пока ошибка не исчезнет?

Мне нужно, что бы код выглядел не вот так:
try:
			ticker_value_at_start_date = TickerValue.objects.get(date=date, ticker=ticker)
		except TickerValue.DoesNotExist:
			try:
				date = date - timedelta(1)
				ticker_value_at_start_date = TickerValue.objects.get(date=date, ticker=ticker)
			except TickerValue.DoesNotExist:
				try: 
					date = date - timedelta(2)
					ticker_value_at_start_date = TickerValue.objects.get(date=date, ticker=ticker)
				except:
					date = date - timedelta(3)
					ticker_value_at_start_date = TickerValue.objects.get(date=date, ticker=ticker)

а вот так :
count = 1
While not TickerValue.DoesNotExist:
	date = date - timedelta(count)
	ticker_value_at_start_date = TickerValue.objects.get(date=date, ticker=ticker)

Как реализовать такой цикл?)
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Используй try-else для отслеживания успешного завершения вызова и break для выхода из цикла.
for d in range(0, 10): # сколько отступов делать
    try:
        #к слову, так у тебя date будет считаться не -1, -2, -3... а -1, -3, -6...
        date = date - timedelta(d) 
        pass # операция, которую ты хочешь выполнить
    except TickerValue.DoesNotExist: #отработает при  ошибке
        pass #или time.sleep(), чтобы подождать перед следующим вызовом - если надо
    else: #отработает при успешном выполнении блока try
        break #выходим из for
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 мая 2024, в 22:37
20000 руб./за проект
17 мая 2024, в 22:33
1000 руб./за проект
17 мая 2024, в 22:30
5000 руб./за проект