![](/img/trans.png)
[英]Python - break statement not working in else statement within while loop
[英]Python: break statement not working in for loop
到目前為止,這是我的代碼。 我有一個如下列表啟動,其長度為3。目標是返回最長列表的長度,該長度與self.nums
相同。
self.nums = ['1', '2', '3']
ourPrefixLen = len(self.nums) # outputs 3
dict_of_prefixes = {} # to be populated
for url, list_blocks in chains.items():
print("URL - ")
print(url)
print("list_blocks - ")
print(list_blocks)
for i in range(ourPrefixLen):
print('i - ')
print(i)
print("self.nums[i] - ")
print(self.nums[i])
print("list_blocks[i] - ")
print(list_blocks[i])
if self.nums[i] != list_blocks[i]:
print("BREAK")
break
print("NOOO")
dict_of_prefixes[url] = list_blocks
print("HERE")
length = 0
longest = ""
for url, chain in dict_of_prefixes.items():
if len(chain) > length:
length = len(chain)
longest = url
return longest
chains
是一本字典。 這是我失敗的測試用例:
chains = {'a':['1', '2', '3'], 'b':['1','2','3'], 'c':['1','3','4','5']}
結果應該是3(最長鏈的長度,其前綴與self.nums
相同,但是我得到的4不正確( c
的長度),所以我的代碼仍然將c
添加到dict_of_prefixes中,即使它是
包括所有這些打印語句,這是相關的輸出:
URL -
c
list_blocks -
['1', '3', '4', '5']
self.nums[i] -
1
list_blocks[i] -
1
self.nums[i] -
2
list_blocks[i] -
3
BREAK
HERE
因此,這表明它正在進入Break語句的情況,並且不將c
添加到dict_of_prefixes
。 那么,為什么c
仍被添加到dict_of_prefixes?
這是因為您如何遍歷並將所有sublist
匹配項添加到dict_of_prefixes
。 您缺少的是何時匹配self.num
時實際添加列表的邏輯。
考慮下面的代碼片段,我們僅在is_match
保持為True
添加一些內容,否則我們會中斷甚至不考慮它(為簡單起見,我刪除了print
)
...
is_match = True # Assume that this sublist is a match
for i in range(ourPrefixLen):
if self.nums[i] != list_blocks[i]:
is_match = False
break
if is_match:
dict_of_prefixes[url] = list_blocks
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.