![](/img/trans.png)
[英]Creating plots with multiprocessing and time.strftime() doens't work properly
[英]controlling with range(var) doens't work properly
我的代碼如下所示:
def rd_parse(w,i,k):
for r in list(range(k)):
j = i+1 + i+r + k-1
if np(w,i,j):
return True
elif v(w,i,j):
return True
elif np(w,i,j) and v(w,j,k):
return True
else:
return False
def np(w,i,k):
if k == i + 1 and w[i] == "Hans":
return True
else:
return False
def v(w,i,k):
if k == i + 1 and w[i] == "isst":
return True
else:
return False
可能的查詢:
w = ["Hans"] rd_parse[w,0,len(w) True
這是我的預期結果。
現在我想查詢更復雜的東西
w = ["Hans", "isst"] rd_parse(w,0,len(w))
返回False
當我使用調試器時,我發現我的循環無法正常工作。 在len(w) = 2
[0,1,2]
情況下,它無法正確地遍歷list(range(k))
給定的list(range(k))
。 它僅選擇r=0
,此后不再采取任何其他步驟。 誰能指出為什么呢?
我希望你有一個方便的夜晚,
b。
return
從函數返回。 為什么要期待下一次迭代?
如果要在任何元素匹配時返回True,則僅在沒有元素匹配時返回False。 也就是說,將return False
移出循環。
您需要將return False
移到循環外,無論如何,您都可以在第一次迭代后返回,也可以簡化函數,也不需要並且不應僅在range上調用list來對其進行迭代:
def np(w, i, k):
return k == i + 1 and w[i] == "Hans"
def v(w, i, k):
return k == i + 1 and w[i] == "isst"
def rd_parse(w, i, k):
for r in range(k):
j = i + 1 + i + r + k - 1
if v(w, i, j) or v(w,j,k):
return True
elif np(w, i, j):
return True
return False # outside loop
如果np(w,i,j)
為False,則np(w,i,j) and v(w,j,k)
不可能為True;相反,如果np(w,i,j)
為True,則您永遠不會到達任何其他線路。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.