2017-03-26 5 views
0

私はHackerRankでQuestionを解決しようとしていました。Python:アイテムが存在していてもリスト内のアイテムがFalseと評価された場合

#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'が含まれているにもかかわらず

問題

tmp'do'あるとき、if tmp in pw_in_sは満足して取得されていません。また、length値が増加していないので、プログラムは無限ループに入ります。

問題はどこですか?

答えて

2

tmpは「を実行」の場合、リストpw_in_s項目が含まれているにもかかわらず pw_in_sであればtmpが満足になっていません「ん」。

この問題は再現できません。

また、プログラムが無限ループです。

if tmp in pw_in_s:のコードパスでは、各繰り返しで終了条件に必ずしも進展するとは限りません。 start=lengthlength=1を設定すると、start+lengthlen(s)よりも大きなを作るにあなたが近づくことはありません。デバッグのために

print(start, length, len(s), tmp, pw_in_s, (tmp in pw_in_s))に変更print (tmp)

+0

おかげで(.............) – jophab

関連する問題