повторить итерацию цикла for

если по какой-то причине я хочу повторить ту же итерацию, как я могу это сделать в python?

for eachId in listOfIds:
    #assume here that eachId conatins 10
    response = makeRequest(eachId) #assume that makeRequest function request to a url by using this id
    if response == 'market is closed':
       time.sleep(24*60*60) #sleep for one day

теперь, когда функция просыпается от сна после одного дня (рынок (рынок валютной торговли) открыт), я хочу возобновить цикл for от eachId = 10 not С eachId = 11, потому что eachId = 10 еще не обработано как market was closed, любая помощь будет высоко ценится, спасибо.

4 ответов


делай так:

for eachId in listOfIds:
    successful = False
    while not successful:        
        response = makeRequest(eachId)
        if response == 'market is closed':
            time.sleep(24*60*60) #sleep for one day
        else:
            successful = True

название вашего вопроса является ключом. повторять достигается путем итераций, и в этом случае вы можете сделать это просто с вложенной while.


использовать while петли?

counter = 0
while counter < len(listOfIds):
  # do processing
  counter = counter + 1

и просто не увеличивайте, если вы получите "рынок закрыт".


for eachId in listOfIds:
    while makeRequest(eachId) == 'market is closed':
       time.sleep(24*60*60) #sleep for one day

Как добавил @ David, если вам не нужно захватывать response.


i = 0
while i < len(listOfIds):
    eachId = listOfIds[i]
    #assume here that eachId conatins 10
    response = makeRequest(eachId) #assume that makeRequest function request to a url by using this id
    if response == 'market is closed':
       time.sleep(24*60*60) #sleep for one day
    else:
       i += 1