2016-08-14 4 views
0

내 코드는 문서 문자열에서 예외를 반환하고, 나는이 문제를 볼 수 없습니다 :간단한 파이썬 문서 예외가

def printBreak(title): 
    """Prints a dotted line""" 
    print("------" + title + "------") 

def printWords(theWords): 
    """Prints the passed array with word length and word""" 
    for w in theWords: 
     print(len(w), w) 
    print("") 

def sortWordsByLength(theWords): 
    """Word array sorted by length""" 
    for w in theWords: 
     for i in range(len(wordsSortedByLength)): 
      if len(w) > len(wordsSortedByLength[i]): 
       wordsSortedByLength.insert(i,w) 
       break 
     else: 
      wordsSortedByLength.append(w) 


def main(): 
    printBreak("Initial word array") 
    printWords(words) 
    printBreak(sortWordsByLength.__doc__) 
    sortWordsByLength(words[1:]) 
    printWords(wordsSortedByLength) 

# Sort some strings 
words = ['happy', 'cat', 'window', 'appetite', 'gophery', 'it', 'perky'] 
wordsSortedByLength = [words[0]] 
main() 

오류 :

File "/Users/bevilacm/source/Python/Scripts/sortWords.py", line 7 
for w in theWords: 
       ^
IndentationError: unindent does not match any outer indentation level 
[Finished in 0.1s with exit code 1] 

문서 문자열에서 주석 경우 printWords 함수 문서 문자열, 코드가 작동합니다. 나는 그것이 단순하지만 아직 그것을 보지 못하는 무언가라고 기대한다.

감사합니다.

답변

4

탭과 공백이 섞여있어 어떤 문장이 들여 쓰기 수준에 있는지 혼란스럽게합니다. 파이썬 3에서는 탭과 공백의 일관되지 않은 혼합을 알려주는 에러가 발생하지만, 어떤 이유로 그런 일이 일어나지 않는 것처럼 보입니다.

탭과 공백을 섞지 마십시오. 에디터에서 "공백 표시"를 켜서 문제를 볼 수있게하고 "탭을 공백으로 변환"도구가 탭을 찾아 수정합니다.