2016-10-15 4 views
0

나는 파이썬 챌린지 ARG를위한 초보자 파이썬 스크립트를 작성 중이다. 기본적인 목표는 대용량의 텍스트를 읽을 수있는 스크립트를 작성하고 정확히 3 개의 대문자가있는 소문자 만 통과시키는 것입니다. 스크립트는 목록에서 들어오는 문자를보고 다음 3 자 및 이전 3자를 목록에 저장합니다. 이런 일이 발생하면 스크립트는 들어오는 문자가 대문자인지 아닌지를 평가합니다. 루프가 시작되면 스크립트는 그렇지 않으면 목록의 세 문자가 모두 대문자인지 평가합니다. 조건이 충족되면 스크립트는 현재 문자를 인쇄해야합니다. 그렇지 않으면 루프가 다시 시작됩니다.Python 스크립트가 무한 루프에 걸려있다

이 스크립트를 실행할 때마다 코드에 대한 디버그/오류/경고가 표시되지 않지만 파일을 완성하거나 전혀 쓰지 않습니다.

여기 제가 작성한 코드입니다. 도움을 주시면 감사하겠습니다.

#code, where f = text to be processed, d = text file to be written to 

f = open("test.txt", "r+") 
f = f.read() 
fList = list(f) 
limit = len(fList) 

#Set location of result 
d = open("noided.txt", "r+") 
i, j, k = [0, 0, 0] 

#Main loop 
#While there are characters left to be processed 
while i < limit: 
    #Skip the first 4 characters 
    if i < 4: 
     #print i, fList[i] 
     i += 1 
    else: 
     #print i, fList[i] 
     currentChar = fList[i] 
     count = 0 
     prevChars = [fList[i-1],fList[i-2],fList[i-3]] 
     nextChars = fList[i:i + 3] 

     if currentChar.isupper(): 

      i += 1 

     else: 
      while k < 3: 
       if prevChars[k].isupper() and nextChars[k].isupper(): 
        count += 1 
        k += 1 
       elif count == 3: 
        print currentChar 
        d.write(currentChar) 
        i += 1 
       else: 
        i += 1 
+0

여기서 변수는 'i'입니다. ,'limit'과'k'가 초기화 되었습니까? 코드의 들여 쓰기가 정확하지 않은 것처럼 보입니다. –

+0

들여 쓰기를 수정하십시오. 'else'는 아마도'if'에 속할 것이고'while'에 속하지 않을 것입니다 (또한 가능하지만이 컨텍스트에서는 그렇지 않습니다). 또한,'&'는 비트 단위이며,; 작동하는 동안, 여기에서도 역시'and'를 원할 것입니다. –

+0

그건 들여 쓰기가 안 좋았고, 눈치 채지 못했지만 편집장에서 첫 번째 질문에 대답하는 것과 같지 않았습니다. 예를 들어 모든 변수가 초기화되었습니다. 여기에 표시되지 않았습니다. –

답변

0

처음에는 제한된 이름의 변수가 없습니다. 둘째, 스택 유형의 목록을 사용하는 것이 더 쉽습니다. 스택을 종이 더미로 생각하십시오. 파일의 문자를 for 루프를 사용하여 구문 분석 할 수 있지만 스택에 들어가기 전에 각 문자를 비교할 수 있으므로이 모듈이 이러한 종류의 프로젝트에 유용합니다.

관련 문제