2017-09-13 2 views
-4

Ich habe mein Programm geschrieben, um ein Argument von der Befehlszeile zu nehmen und die Zahlen in der Datei zu verwenden, um eine Reihe von Statistiken zu erstellen. Ich kann meinen Code nicht kompilieren, da ein Einrückungsfehler vorliegt. Ich habe versucht, aber ich sehe nur nicht, wo meine Einrückung falsch ist. Könnte mir jemand in die richtige Richtung zeigen?Einrückung meines Codes

Code:

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() 

Fehler:

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

+2

Blick auf den Fehler. Es sagt Ihnen buchstäblich *, wo Ihr Code falsch gelaufen ist. – Jerrybibo

+0

Sie benötigen zusätzlichen Platz vor 'lines = handle.readlines()'. – DyZ

Antwort

1

Ihr Code muss nach with Aussagen eingekerbt werden. Dies ist der korrekte Code.

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

Sie Einrückung ist umstritten. Nur 'lines = handle.readlines()' muss eingerückt werden. Alle folgenden Zeilen haben im 'with' -Block nichts zu suchen. – DyZ

+1

Sie haben Recht. Ich werde es reparieren. – JohnDoe

0

Sie Vertiefung sollte jedoch aus dem Skript Pep 8 stark recomends die Verwendung von Räumen über Registerkarten im Einklang stehen. Ich persönlich benutze 4 Räume

Wie JonDoe über der Vertiefung gesagt hat, nachdem der mit Anweisung eingekerbt werden muss, wie auch für die, während, wenn Aussagen

Verwandte Themen