有沒有辦法讓循環在循環中的任何一點再次啓動?說行有三個長度。如果if語句得到滿足並且我的索引增加,我希望所有內容都會在第一行的值處重新開始檢查。 (注意,這一切都是True循環的一部分)。得到一個for循環來重啓,如果條件得到滿足
for line in library:
if message[index:index + len(line)-2] == line[2:]:
ans += line[0]
index += len(line)-2 + 1
有沒有辦法讓循環在循環中的任何一點再次啓動?說行有三個長度。如果if語句得到滿足並且我的索引增加,我希望所有內容都會在第一行的值處重新開始檢查。 (注意,這一切都是True循環的一部分)。得到一個for循環來重啓,如果條件得到滿足
for line in library:
if message[index:index + len(line)-2] == line[2:]:
ans += line[0]
index += len(line)-2 + 1
我認爲你需要以上的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
你可以在你的情況library
和i
與line
取代x
。然後,如果不是i == 4
您添加重置循環的斷點條件,如果你有一個實際的休息條件,你restart
標誌設置爲False
另一種選擇是使用一個循環計數器像n = 2
和使用while n < 2:
,然後設置n += 1
每當你想要重置時,只要你的條件成立或n = 0
。
你需要一個StopIteration catch,否則一旦列表結束,它也會重新啓動 – Naib
如果我正在閱讀它,您希望在找到匹配項時完全重新啓動循環。最簡單的方法是通過跳出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
如何完全分解?是的,我有一個while循環遍歷所有這些,但我有更多的代碼在我想要的範圍之內。當我現在休息時,我只是離開for循環,但休息讓我回到了。我該如何離開這段時間,然後到達下一段代碼?謝謝:) –
更新:我明白了:)使一個字符串等於一個單詞,然後檢查該單詞是否等於突破該單詞。感謝大家! xx –
@ K.Carpenter好聽!雖然,如果只是在到達for循環結束時(包括重新啓動)只想退出while循環,則只需在與將for循環條件設置爲False的for循環相同的縮進處添加else語句。這個else語句將在for循環結束時到達。 –
我不明白你在問什麼。 .. – Arman
@Arman so line包含我想通過消息中的子字符串檢查子字符串的值。目前,當我找到匹配並增加索引以查看下一位是否具有匹配的行時,它僅從行的下一個元素開始(並跳過第一位)。所以即使有一場比賽,我也不會得到它。我想知道是否可以在索引增量後重新啓動for循環到行的第一個元素? –
有很多方法可以做到這一點,看看這些: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