2011-09-03 69 views
8

nếu vì một lý do nào đó tôi muốn lặp lại cùng một lần lặp như thế nào tôi có thể làm điều đó trong python?lặp lại một vòng lặp cho vòng lặp

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 

bây giờ khi chức năng thức dậy từ giấc ngủ sau một ngày ((thị trường thương mại thị trường tiền tệ) là mở) tôi muốn tiếp tục của tôi cho vòng lặp từ eachId = 10not từ eachId = 11, vì eachId = 10 vẫn chưa được xử lý như market was closed , bất kỳ trợ giúp được đánh giá cao cảm ơn.

+0

lưu nội dung vào danh sách. – JBernardo

+0

Tôi nghĩ rằng những gì anh ta hỏi là làm thế nào để không tăng truy cập danh sách vòng lặp 'for' trên một lần lặp. – bcoughlan

Trả lời

18

Làm điều đó như thế này:

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 

Tiêu đề của câu hỏi của bạn là đầu mối. Lặp lại đạt được bằng cách lặp lại và trong trường hợp này, bạn có thể làm điều đó đơn giản với một số lồng nhau while.

+0

cảm ơn sự giúp đỡ, lồng nhau trong khi ahhh làm thế nào điều này không đến trong tâm trí của tôi: p –

3

Sử dụng vòng lặp while?

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

Và không tăng thêm, nếu bạn nhận được 'thị trường bị đóng'.

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

Vì @David đã thêm, nếu bạn không cần chụp response.

+0

Điều này là tốt, trừ khi 'phản ứng' cần phải được nắm bắt. Nếu không, điều này phải gần với súc tích nhất có thể. –

0
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 
Các vấn đề liên quan