Python-Skript gibt unbeabsichtigten "None" nach der Ausführung einer Funktion
Hintergrund: totaler Anfänger zu Python; gesucht über diese Frage, aber die Antwort, die ich fand, war, mehr über das "was" als das "warum";
Was ich tun soll: Erstellen Sie eine Funktion, test-Ergebnis Eingabe des Benutzers und Ausgabe von Brief-Typen laut einer Grad Skala/Kurve; Hier ist der code:
score = input("Please enter test score: ")
score = int(score)
def letter_grade(score):
if 90 <= score <= 100:
print ("A")
elif 80 <= score <= 89:
print ("B")
elif 70 <= score <= 79:
print("C")
elif 60 <= score <= 69:
print("D")
elif score < 60:
print("F")
print (letter_grade(score))
Diese, wenn Sie ausgeführt, gibt:
Please enter test score: 45
F
None
Den None
ist nicht vorgesehen. Und ich fand, dass wenn ich (letter_grade(score)
statt print (letter_grade(score))
, die None
wird nicht mehr angezeigt.
Die nächste Antwort, die ich finden konnte, sagte etwas wie "Funktionen in python-die Rückkehr Keiner, es sei denn, ausdrücklich angewiesen, dies zu tun." Aber ich habe eine Funktion aufzurufen, die in der letzten Zeile, so bin ich ein bisschen verwirrt hier.
Also ich denke, meine Frage wäre: was verursacht das verschwinden von None
? Ich bin sicher, das ist ziemlich grundlegende Dinge, aber ich war nicht in der Lage zu finden keine Antwort, erklärt, dass das "hinter-der-Bühne" - Mechanismus. So bin ich dankbar, wenn jemand kann werfen etwas Licht auf diese. Danke!
- ersetzen Sie jede
print
mitreturn
. - Danke! So bedeutet das, dass eine Funktion sucht automatisch nach einer
return
Wert am Ende der Funktion, und wenn keinereturn
, zeigt nurNone
? Ich würde es wirklich schätzen, wenn man ausarbeiten könnte, warum sich die Entfernung vonprint
auf der letzten Zeile auch das problem behoben? - nichts geschieht "automatisch". es ist einfach führt jede Anweisung, und wenn er fällt durch das Ende, es führt
return None
. Sie können immer fügen Sie einereturn None
als Letzte Anweisung in einer Funktion ohne änderung seines Verhaltens. - Deine Erklärung ist sehr klar. Ich danke Ihnen sehr!
Du musst angemeldet sein, um einen Kommentar abzugeben.
In python die default-Rückgabewert einer Funktion ist
None
.Also, nutzen Sie einfach:
letter_grade(score) #remove the print
Andere alternative ist es zu ersetzen alle Drucke mit
return
:Nun verwenden
print()
:print
eine Funktion, einNone
zurückgegeben wird zusammen mit dem Ergebnis der Funktion?None
. So, im Falle dass Sie sich nicht wieder irgendetwas nicht verwendenprint
während Sie die Funktion aufrufen.None
(für Partitur>100) und zwar ist es ein legitimes Verhalten ist, lohnt es sich zu bemerken.Funktionen ohne return-Anweisung, bekannt als void-Funktionen Keine Funktion. Rückgabe einen anderen Wert als "None" verwenden, benötigen Sie eine return-Anweisung in Funktionen.
Werte wie None, True und False sind keine Zeichenfolgen: Sie sind Besondere Werte und Schlüsselwörter in python, die sind reserviert.
Wenn wir an das Ende jeder Funktion und wir haben nicht explizit ausgeführt, jede return-Anweisung, Python wird automatisch wieder der Wert None. Zum besseren Verständnis siehe das Beispiel unten. Hier stark nicht dass etwas zurückgegeben, so wird die Ausgabe Keine
die Ausgabe des obigen code ist:
Hier ist mein Verständnis. Eine Funktion wird "none" zurückgegeben, um die Konsole wird kein Wert gegeben, um zurückzukehren. Da print keinen Wert, wenn Sie verwenden print () - als die einzige Sache, die Sie möchten, dass Ihre Funktion zu tun, 'none' zurückgegeben an die Konsole, nachdem Sie Ihre gedruckte Anweisung. Also, wenn die Funktion will einen Wert, und Sie möchten, dass ein string sein, der Wert, der zurückgegeben wird...
Geben Sie Ihr zurückgegeben-Anweisung den Wert einer Zeichenfolge, wie dieses...
Hier ist ein sehr einfaches Beispiel:
Drucken Sie dann die Funktion, wo Sie beabsichtigen, es zu werden:
Ergebnis ist: