Python Unterschied input() am "Anfang" oder am "Ende"

S

SI Sun

Gast
Was macht diesen Code besser als....

Python:
c = int(input())

def umrechner(c):
    f = 9/5 * c + 32
    print(f)

umrechner(c)

... diesen Code:

Python:
c = 0

    def umrechner(c):
        f = 9/5 * c + 32
        print(f)

    umrechner(int(input()))

Warum sollte man input() am Anfang gegenüber input() am Ende bevorzugen?

Das ist ein Celsius zu Fahrenheit Umrechner.
c = celsius
f = fahrenheit
 
Zuletzt bearbeitet von einem Moderator:
Beim zweiten stimmt die Einrückung nicht. Aber selbst, wenn es dann läuft, macht man beides nicht.

Entweder gruppiert man die beiden Codezeilen unter den Funktionen (oder wenn es sein muss darüber).

Es mach Sinn, die Eingabe klar ersichtlich, wie in
Code:
c = int(input())
zu schreiben. Das ist am leserlichsten und das ist wohl die Hauptfrage.
 
Zuletzt bearbeitet:
@M4ttX
Die Einrückung ist das Ergebnis von Copy & Paste aus zwei verschiedenen Quellen.
Oben ist vom Browser.
Unten ist von PyCharm mit "if name == "main":" als erste Zeile. Dort folge ich stumpf den Empfehlungen von PyCharm, was Abstände angeht.

Was du mit deinem zweiten Satz aber meinst, verstehe ich nicht.
 
Habs editiert
 
SI Sun schrieb:
Warum sollte man input() am Anfang gegenüber input() am Ende bevorzugen?

Also ohne jetzt tief einzusteigen würde ich sagen es ist einfach leserlicher.
Irgendwer hat irgendwo mal gesagt ein guter Code kann von jedem einfach gelesen werden.
Wenn du den Input am Anfang als Variable setzt weiß jeder ab diesem Zeitpunkt was damit gemeint ist.
So gehts mir zumindest.

Funktional ists egal.
 
  • Gefällt mir
Reaktionen: tomgit
Mehrere Dinge:
  1. Namen sind wichtig. umrechner ist zu unspezifisch. Nennst du die Funktion to_fahrenheit(celsius) dann hättest du gar nicht dazu schreiben müssen was die Funktion machen soll und was sie als Input erwartet
  2. Funktionen wie umrechner sollten meistens Dinge zurückgeben, zumindest würde ich das bei einer Umrechungsfunktion erwarten
  3. Benutz eine main() Methode
Alles einmal angewendet vielleicht so (ungetestet und schnell hingeschrieben)

Python:
def to_fahrenheit(celsius):
    return (celsius * 9/5) + 32

def main():
    celsius = int(input("Degree in Celsius: "))
    fahrenheit = to_fahrenheit(celsius)
    print(f"{celsius} Celsius = {fahrenheit} Fahrenheit")

if __name__ == "__main__":
    main()
 
  • Gefällt mir
Reaktionen: kuddlmuddl, Mulciber, KitKat::new() und 3 andere
Und wie Bitopium implizit schon richtig gemacht hat, aber nicht explizit gesagt hat: Eine Funktion, die etwas umrechnet, sollte auch keine Ausgabe machen - oder halt nur in Ausnahmefällen (If you know the rules, break them).
 
  • Gefällt mir
Reaktionen: kuddlmuddl und Bitopium
Bitopium schrieb:
Benutz eine main() Methode
Volle Zustimmung zu den Punkten 1 und 2, auch dein Code sieht soweit sauber aus, die Sache mit der main()-Funktion (Methoden sind Teil einer Klasse) ist jedoch vollkommen egal und erzeugt nur eine überflüssige Einrückung. Wer seine Module sinnvoll benennt (main.py) und die IDE bzw. das Projekt ordentlich konfiguriert, braucht keine main-Funktion.
 
  • Gefällt mir
Reaktionen: tomgit
Zurück
Oben