Drücken Sie zum beenden die EINGABETASTE While-Schleife in Python 3.4
Ich bin neu in Python und unterrichte mich über die letzten Monate. Das Buch, das ich mit lehrt Python 2.7, während ich versuche zu lernen in Python 3.4. Ich habe daran gewöhnt, mit beiden jetzt, sondern auch für das Leben von mir ich kann nicht herausfinden, wie beenden Sie diese while-Schleife mit der enter-Taste. Der code wird unten angezeigt:
total = 0
count = 0
data = eval(input("Enter a number or press enter to quit: "))
while data != "":
count += 1
number = data
total += number
average = total / count
data = eval(input("Enter a number or press enter to quit: "))
print("The sum is", total, ". ", "The average is", average)
Ich bekomme immer diese Fehlermeldung:
Traceback (most recent call last):
File "/Users/Tay/Documents/Count & Average.py", line 10, in <module>
data = eval(input("Enter a number or press enter to quit: "))
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
Ich bin in der Lage zu bekommen, eine modifizierte version dieser code funktioniert bei 2.7, aber ich würde gerne wissen, wie Sie in 3.4. Ich habe gesucht, überall herum und kann nicht scheinen, um eine Antwort zu finden.
- Warum sind Sie mit eval? Setzen Sie die
while
Bedingung am Ende der Schleife, nicht die oberen. - Eine Eingabe von dem Benutzer auf diese Weise: anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/io.html
- Ich habe nur die code-änderungen mit dieser Anleitung: docs.python.org/2/library/2to3.html. Deshalb bin ich mit eval. Sollte ich nicht mit eval?
- Vermeiden
eval()
Wann immer möglich. Sie können den Fehler abfangen mittry..except
(nichtexpect
). - Okay, danke für den Tipp TigerhawkT3!
- Auch @RobertHarvey danke für den link. Ich wird stellen Sie sicher, dass es Lesezeichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, diese korrigierte version des Codes. Ihre Logik ist richtig, aber Sie hatte ein paar Fehler. Sie brauchen nicht
eval
Sie hatte, um die Zahl zu konvertieren, um eineinteger
wenn Sie es insgesamt, und schließlich mussten Sie definieren durchschnittlichen außerhalb der Funktion, bevor Sie es ausgedruckt.Beispiele:
while data != "":
verkürzt werden kann, umwhile data:
.average = total / count
- keine Notwendigkeit, zu berechnen, es wiederholt, und ersetzen Sie dieformat()
string saverage
mittotal/count
.Halten, wird die Eingabe des Benutzers als string, bis Sie seinen Inhalt:
ich trenne eine eval Funktion ISTZAHL ich es zu halten, schwimmende dezimal, und es scheint ein wenig sauberer.