Python:如果列表中的项目评估为False,即使该项目存在

时间:2017-03-26 07:54:07

标签: python python-3.x

我试图在HackerRank中解决这个Question

#t=int(input().strip())
t=1
for i in range(0,t):
    #u=input()
    #pw=str(input()).split(' ')
    #s=input().strip()
    u=6
    pw=['because', 'can','do', 'must', 'we', 'what']
    s="wedowhatwemustbecausewecan"
    pw_in_s=[]
    for p in pw:
        if p in s:        
            pw_in_s.append(p)
    print(pw_in_s)
    start=0
    length=1
    res=""
    while start+length<=len(s):
        tmp=s[start:start+length]
        print (tmp)
        if tmp in pw_in_s:
            res+=" "+tmp
            start=length
            length=1            
        else:
            length=length+1   
    print(res)

解决问题的代码并不完整。但是我中途停留了。

问题

即使列表pw_in_s包含项'do'if tmp in pw_in_s tmp'do'也无法满足length。此程序也会进入无限循环,因为count()值不会增加。

问题出在哪里?

1 个答案:

答案 0 :(得分:2)

  

即使列表pw_in_s包含项目'do',if tmp in   当tmp为'do'时,pw_in_s不满意。

我无法重现这个问题。

  

该程序也处于无限循环中。

这发生在if tmp in pw_in_s:的代码路径中,它不一定在每次迭代的终止条件上取得进展。设置start=lengthlength=1并不会让start+length大于len(s)

要进行调试,请将print (tmp)更改为print(start, length, len(s), tmp, pw_in_s, (tmp in pw_in_s))