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 mit return.
  • Danke! So bedeutet das, dass eine Funktion sucht automatisch nach einer return Wert am Ende der Funktion, und wenn keine return, zeigt nur None ? Ich würde es wirklich schätzen, wenn man ausarbeiten könnte, warum sich die Entfernung von print 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 eine return None als Letzte Anweisung in einer Funktion ohne änderung seines Verhaltens.
  • Deine Erklärung ist sehr klar. Ich danke Ihnen sehr!
InformationsquelleAutor hakuna121 | 2013-06-07
Schreibe einen Kommentar