2016-09-03 7 views
-3

Ich habe keine Ahnung, was ich falsch mache, aber das treibt mich eine Mauer hoch. Warum erhalte ich einen Syntaxfehler? Ich muss einen durchschnittlichen Taschenrechner mit einer while-Anweisung codieren, wobei "0" definiert, dass das Programm die Berechnung durchführen muss.Ungültiger Syntaxfehler - Durchschnitt Rechner "IF" und "WHILE"

enter image description here Hier ist der Beispielausgabe mein Professor definiert:

SAMPLE RUN 

Enter test score 80 

Enter test score 70 

Enter test score 90 

Enter test score 88 

Enter test score 0 

The average is 82.000% 
+1

'wenn Test ==‚0'' ist keine gültige Linie auf seine eigene. Was willst du dort machen? – Harrison

+4

Bitte poste keinen Screenshot deines Codes. Kopieren Sie den Code in Ihre Frage und verwenden Sie die Formatierungswerkzeuge. Bitte fügen Sie auch die * genaue * Fehlermeldung, wo der Syntaxfehler passiert – idjaw

+0

Ich sehe nicht, wie Sie die Endlosschleife beenden oder warum Sie erwarten, eine ganze Zahl im Vergleich zu einer Zeichenfolge zu überprüfen –

Antwort

1

ich Ihren Code für Sie festgelegt haben. Für zukünftige Fragen, bitte posten Sie Ihren Code direkt in Ihre Frage und einrücken Sie alles um 4 Leerzeichen, um es richtig zu formatieren.

addition_integer = 0 
divison_integer = 0 

while True: 
    test = int(input("Enter test score: ")) 
    if test == 0: 
     break 
    else: 
     addition_integer += test 
     divison_integer += 1 

print("The average is {}%".format(addition_integer/divison_integer)) 

Hier ist eine Erklärung dessen, was ich tat, um dies zu beheben:

Sie wurden Looping while True, was richtig ist, aber Sie hatte keine Möglichkeit aus der while-Schleife zu brechen. Ihre Zeile, die if test == '0' sagt, würde nie zu true auflösen, weil Sie die Eingabe als int vom Benutzer nehmen, nicht zu erwähnen, dass es fehl am Platz war und keine korrekte Syntax hatte. Was ich in dem Code oben mache, wird fortgesetzt Schleife, bis die Eingabe vom Benutzer gleich 0 (eine ganze Zahl, keine Zeichenfolge) ist. Wenn der Benutzer 0 eingibt, brechen wir einfach aus der Schleife aus und drucken den Durchschnitt. Bis dahin fahren wir fort, um die Eingabe zu addition_integer und erhöhen division_integer von 1.

Alles in allem hinzufügen, Sie waren ziemlich nah an der Lösung, die Sie gerade ein paar Syntaxänderungen benötigt und in die richtige Richtung gelenkt werden, wie zum wie man aus einer Endlosschleife ausbrechen kann.

Schließlich, hier ist ein Test, um die Zahlen, die Sie in Ihrer Frage zur Verfügung gestellt haben:

Enter test score: 80 
Enter test score: 70 
Enter test score: 90 
Enter test score: 88 
Enter test score: 0 
The average is 82% 
2

Die if Aussage im Bild (bitte den eigentlichen Code in Ihrer Frage schreiben) ist ungültig. Es benötigt einen Doppelpunkt, d.h. . Es braucht auch einen Körper.

Die Beispielausgabe schlägt vor, dass 0 die Schleife beenden soll. Überprüfen Sie zuerst, bevor Sie division_integer ändern, andernfalls wird der Durchschnitt betroffen sein. Dann, wenn Sie erhalten eine 0Pause aus der while-Schleife mit break, das heißt

while True: 
    test = int(input('Enter test score:')) 
    if test == 0: 
     break 
    addition_integer += test 
    division_integer += 1 

Beachten Sie, dass die Eingabe in eine ganze Zahl konvertieren, aber Ihr Test war für die String"0". Sie müssen auf die Ganzzahl 0 testen, wie ich oben zeige.

Ein weiterer Punkt, sollten Sie einen try/except Block verwenden, wenn die Eingabe in eine ganze Zahl konvertieren, so dass Sie ungültige Eingabe fangen:

while True: 
    try: 
     test = int(input('Enter test score:')) 
    except ValueError: 
     print('Invalid number entered, try again.') 
     continue 
    # etc. 
0

Alternative Antwort

Verwenden Sie eine Liste, Summe und dividieren. Gleiches Konzept, vergleiche den Test innerhalb der while-Schleife, um daraus auszubrechen. Überprüfen Sie auch, ob Sie eine gültige Eingabe erhalten, die mit einem try/except zu einer Ganzzahl gemacht werden kann.

Zusätzlich kann durch Null der Division passen

values = [] 

while True: 
    try: 
     test = int(input('Enter test score:')) 
     if test == 0: 
      break 
     values.append(test) 
    except: 
     break 

total = len(values) 
avg = 0 if total == 0 else 1.0 * sum(values)/total 

print("The average is", avg) 
Verwandte Themen