2017-02-25 64 views
0

有沒有辦法讓循環在循環中的任何一點再次啓動?說行有三個長度。如果if語句得到滿足並且我的索引增加,我希望所有內容都會在第一行的值處重新開始檢查。 (注意,這一切都是True循環的一部分)。得到一個for循環來重啓,如果條件得到滿足

for line in library: 
     if message[index:index + len(line)-2] == line[2:]: 
      ans += line[0] 
      index += len(line)-2 + 1 
+0

我不明白你在問什麼。 .. – Arman

+0

@Arman so line包含我想通過消息中的子字符串檢查子字符串的值。目前,當我找到匹配並增加索引以查看下一位是否具有匹配的行時,它僅從行的下一個元素開始(並跳過第一位)。所以即使有一場比賽,我也不會得到它。我想知道是否可以在索引增量後重新啓動for循環到行的第一個元素? –

+0

有很多方法可以做到這一點,看看這些:http://stackoverflow.com/questions/492860/python-restarting-a-loop http://stackoverflow.com/questions/3704918/python-way- to-restart-a-for-loop-similar-to-continue-for-while-loops – thanasisp

回答

0

我認爲你需要以上的for loop。 例如,這是一個連續的循環,除非有中斷條件

x = [1, 2, 3, 4, 5, 6] 
restart = True 
while restart: 
    for i in x: 
     # add any exit condition! 
     # if foo == bar: 
     # restart = False 
     # break 
     if i == value: # add your message condition 
      break 

你可以在你的情況libraryiline取代x。然後,如果不是i == 4您添加重置循環的斷點條件,如果你有一個實際的休息條件,你restart標誌設置爲False

另一種選擇是使用一個循環計數器像n = 2和使用while n < 2:,然後設置n += 1每當你想要重置時,只要你的條件成立或n = 0

+0

你需要一個StopIteration catch,否則一旦列表結束,它也會重新啓動 – Naib

0

如果我正在閱讀它,您希望在找到匹配項時完全重新啓動循環。最簡單的方法是通過跳出for循環,因爲您聲明上面有一個while循環,它仍然爲True並將重新啓動for循環:

for line in library: 
     if message[index:index + len(line)-2] == line[2:]: 
      ans += line[0] 
      index += len(line)-2 + 1 
      break 
+0

如何完全分解?是的,我有一個while循環遍歷所有這些,但我有更多的代碼在我想要的範圍之內。當我現在休息時,我只是離開for循環,但休息讓我回到了。我該如何離開這段時間,然後到達下一段代碼?謝謝:) –

+0

更新:我明白了:)使一個字符串等於一個單詞,然後檢查該單詞是否等於突破該單詞。感謝大家! xx –

+0

@ K.Carpenter好聽!雖然,如果只是在到達for循環結束時(包括重新啓動)只想退出while循環,則只需在與將for循環條件設置爲False的for循環相同的縮進處添加else語句。這個else語句將在for循環結束時到達。 –

相關問題