повторить итерацию цикла for - PullRequest
16 голосов
/ 03 сентября 2011

если по какой-то причине я хочу повторить ту же итерацию, как я могу это сделать в 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 ]

25 голосов
/ 03 сентября 2011

Сделайте так:

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.

6 голосов
/ 03 сентября 2011

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

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

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

0 голосов
/ 03 сентября 2011
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
0 голосов
/ 03 сентября 2011
for eachId in listOfIds:
    while makeRequest(eachId) == 'market is closed':
       time.sleep(24*60*60) #sleep for one day

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...