我的代码如下所示:
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
当我使用调试器时,我发现我的循环不能正常工作。它不能在list(range(k))
给出的列表上正确地交互,这是在len(w) = 2
[0,1,2]
的情况下。它只选择r=0
,从那时起不采取任何进一步的措施。
有人能指出原因吗
祝你今晚过得愉快
b
您需要将
return False
移动到循环之外,无论第一次迭代后返回,您也可以简化您的函数,您也不需要也不应该调用list on range来对其进行迭代:如果
np(w,i,j)
为假,那么np(w,i,j) and v(w,j,k)
就不可能为真,相反,如果np(w,i,j)
为真,那么就永远不会到达任何其他行return
从函数返回。为什么期望下一次迭代如果要在任何元素匹配时返回True,则只在无元素匹配时返回False。也就是说,将
return False
移出循环相关问题 更多 >
编程相关推荐