2017-09-13 1 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つのスペース

を使用する文

関連する問題