2017-09-13 2 views
-4

커맨드 라인에서 인수를 취하고 파일에있는 숫자를 사용하여 통계를 작성하는 프로그램을 작성했습니다. 들여 쓰기 오류가 있기 때문에 코드를 컴파일 할 수 없습니다. 필자는 시도했지만 필자는 들여 쓰기가 잘못된 부분을 보지 못했다. 누군가가 올바른 방향으로 나를 가리킬 수 있었습니까?내 코드 들여 쓰기

코드 :

import sys 

def median(alist): 
    n=len(alist) 
    if n<1: 
     return 'There are none' 
    if n%2: 
     return sorted(alist)[n//2] 
    else: 
     return sum(sorted(alist)[n//2-1:n//2+1])/2.0 

def minimum(alist): 
    return min(alist) 

def maximum(alist): 
    return max(alist) 

def average(alist): 
    return sum(alist)/len(alist) 

def main(): 
    with open(sys.argv[1], 'r') as handle: 
    lines = handle.readlines() 
    list1 = [] 
    for line in lines: 
     fields = line.split() 
    for field in fields: 
     list1.append(float(field)) 
    median(alist) 
    minimum(alist) 
    maximum(alist) 
    average(alist) 

if __name__ == '__main__': 
    main() 

오류 :

File "stats.py", line 23
lines = handle.readlines()
^
IndentationError: expected an indented block

+2

보면. 문자 그대로 * 코드가 잘못 된 곳을 알려줍니다. – Jerrybibo

+0

'lines = handle.readlines()'전에 여분의 공간이 필요합니다. – DyZ

답변

1

귀하의 코드가 with 문 다음에 들여 쓰기를해야합니다. 이것은 올바른 코드입니다.

import sys 

def median(alist): 
    n=len(alist) 
    if n<1: 
     return 'There are none' 
    if n%2: 
     return sorted(alist)[n//2] 
    else: 
     return sum(sorted(alist)[n//2-1:n//2+1])/2.0 

def minimum(alist): 
    return min(alist) 

def maximum(alist): 
    return max(alist) 

def average(alist): 
    return sum(alist)/len(alist) 

def main(): 
    with open(sys.argv[1], 'r') as handle: 
     lines = handle.readlines() 
    list1 = [] 
    for line in lines: 
     fields = line.split() 
    for field in fields: 
     list1.append(float(field)) 
    median(alist) 
    minimum(alist) 
    maximum(alist) 
    average(alist) 

if __name__ == '__main__': 
    main() 
+2

들여 쓰기는 논쟁의 여지가 있습니다. 'lines = handle.readlines()'만 들여 쓰기해야합니다. 다음의 모든 줄은'with' 블럭에서 아무런 일도하지 않습니다. – DyZ

+1

맞습니다. 내가 고칠거야. – JohnDoe

0

당신의 들여 쓰기 펩 8 강하게 탭을 통해 공간의 사용을 recomends 스크립트에서 비록 일치해야합니다. 문으로는, 위해 할로 들여 쓰기를 할 필요가 후 JonDoe는 들여 쓰기 위에 말한 것처럼 나는 개인적으로 4 개 공간

를 사용하는 동안, 오류의 문을