2017-11-25 1 views
0

마지막 값은 탭에 추가되지 않았습니다. 그래서 문자열이 다른 문자열에 들어 있는지 테스트하는 프로그램을 만듭니다. 작동하지만 마지막 값은주의를 기울이지 않습니다. 결과 :for 루프 python 마지막 값이 목록에 추가되지 않았습니다.

result: ['testing', 'toto', 'trete'] 
what expected: ['testing', 'toto', 'trete','apoi'] 

str= ("""test 
testing 
toto 
trete 
apoi""") 

tab = str.splitlines() 
tabmot = [] 

mot = "" 
for i in range(len(tab)): 
    print(int(tab[i]) 
    if mot in tab[i]: 
    mot = tab[i] 
    else: 
    if mot != "": 
     tabmot.append(mot) 
    elif tab[i] == tab[-1]: 
     tabmot.append(tab[i]) 
    mot = tab[i] 
+0

아직 이해하기 어렵습니다. 주어진 예제에 기대되는 결과물을 추가하거나 정교하게 만들 수 있습니까? – 0p3n5ourcE

+0

예제를 추가했습니다. – JHWOOD

+0

도움이되지 않습니다. 그래서 그것은 당신이 필요로하는 결과물 인 tabmot처럼 보입니다. 테스트 및 테스트와 같은 줄기를 찾고 있으므로 최종 목록에서만 테스트를 계속하고 싶습니까? – skrubber

답변

0

당신이 테스트 문자열에서 고유 한 문자열의 새 목록을 만들려고하는 것 같다. 그것이 당신의 의도라면이 코드는 효과가 없습니다. 그것이 당신의 의도가 아니라면이 게시물 끝에있는 해결책을보십시오. 그렇지 않으면 계속 읽으십시오.

'mot'는 이전 반복을 저장하고 'tab'목록의 다음 요소와 비교합니다. 이제 입력 문자열이 tret apoi를 테스트하는 경우 "test"와 "testing"을 비교하지 않습니다. 코드가 [test], [toto], 'testing', 'trete', ' apoi '] 따라서, 이런 것이 기본 솔루션은 두 개의 루프의 도움으로 달성 할 수 있어야하는 방식, 작동하지 않습니다.. 게시물이 솔루션은이 방법으로 달성 할 수

str= ("""test testing toto trete apoi""") 
tab = str.split() 
tabmot = [] 
mot = "" 
for i in range(len(tab)): 
    mot = tab[i] 
    for j in range(i+1, len(tab)-1): 
     if(mot in tab[j]): 
      if(len(mot) < len(tab[j])): 
      mot = tab[j] 
    if(mot not in tabmot): 
     tabmot.append(mot) 
print(tabmot) 

를 : 희망, 그것은 도움이됩니다

tab = str.split() 
tabmot = [] 
mot = tab[0] 
for i in range(1,len(tab)):  
    if mot in tab[i]: 
    mot = tab[i] 
    tabmot.append(mot) 
    else: 
    tabmot.append(tab[i]) 
    mot = tab[i] 
print(tabmot) 

PS :! BTW, 당신은 더 파이썬 할 수

.
관련 문제