Und außerdem streiten wir ja nicht ...
Es gibt eben so ein paar Reizvokabeln, die in schöner Regelmäßigkeit zu einer solchen Diskussion führen: input() z.B. oder der (gezielte) Sternchenimport. Aber dafür ist so ein Forum ja (auch) da.
def und return wirft nichts aus
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
So schnell wird das eher nicht gehen.numerix hat geschrieben:Nein. das lohnt sich nicht mehr - Python 3000 ist ja im Anmarsch, dann hat sich das Thema erledigt.
Wann ist gegebene Zeit? Wenn er ein mehrere Tausend Zeilen langes Programm fertig und deployt hat und dann ein kleines Problem hat und sich rausstellt dass sein Programm hunderte ``inputs()`` hat? Ich nehme jetzt nicht an, dass du bei jedem Anfänger immer dabeistehst und guckst was sie machen. Daher bin ich dafür Anfängern *so früh wie möglich* guten Stil beizubringen.numerix hat geschrieben:Und ich finde es ebenso unproblematisch, einen Anfänger input() benutzen zu lassen und ihn zu gegebener Zeit auf die Problematik hinzuweisen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das hat er nicht gesagt. Er hat nur bemerkt, dass es ihm um sachliche Diskussion und nicht ums Flamen geht. Dein Vorwurf ist imho unbegründet und hat vor allem auch rein gar nichts mit dem Thema dieser Diskussion zu tun. Genau wegen sowas fangen Flamewars doch erst an ...snafu hat geschrieben:Heißt das du führst deine Kritik nur an, um andere Leute auf die Palme zu bringen? Ganz großes Tennis...
Äääähm, danke erstmal an alle!
Ja, unser Professor (!) überspringt gerne mal die ein oder andere Zeile beim Erklären, oder sie tauchen gar nicht erst auf den Folien auf. "Es geht ja nur um die Theorie" betont er immer, allerdings müssen wir für die Klausur die Praxis können...
So fehlt eigentlich "IMMER" die print-anweisung am Ende seiner Beispiele. Und in meinem Fall sollte, wie hier ja einige Leute mir glücklicherweise erklärt haben, die definition nochmal durch den print-befehl aufgerufen werden. Klar, muss ja so sein!
Ich glaube, mein Versagen bestand im Wesentlichen darin, die Funktion des "return" befehls nicht genau zu kennen. Ich meine: Was heißt denn schon "Rückgabewert" und warum wird die Funktion dann nicht nochmal mit dem neuen Wert durchlaufen? Habe ich alles schlecht erklärt bekommen.
Aber Dank dem Internet bin ich schlauer geworden:
*erleuchtet sei*
Ich war übrigens kurz davor, dass Ganze zu umgehen und durch:
auszudrücken. Klappt schließlich auch irgendwie...
Ja, unser Professor (!) überspringt gerne mal die ein oder andere Zeile beim Erklären, oder sie tauchen gar nicht erst auf den Folien auf. "Es geht ja nur um die Theorie" betont er immer, allerdings müssen wir für die Klausur die Praxis können...
So fehlt eigentlich "IMMER" die print-anweisung am Ende seiner Beispiele. Und in meinem Fall sollte, wie hier ja einige Leute mir glücklicherweise erklärt haben, die definition nochmal durch den print-befehl aufgerufen werden. Klar, muss ja so sein!
Ich glaube, mein Versagen bestand im Wesentlichen darin, die Funktion des "return" befehls nicht genau zu kennen. Ich meine: Was heißt denn schon "Rückgabewert" und warum wird die Funktion dann nicht nochmal mit dem neuen Wert durchlaufen? Habe ich alles schlecht erklärt bekommen.
Aber Dank dem Internet bin ich schlauer geworden:
...und wenn ich DANN mein print erfolgen lasse, wird das Ergebnis, was ich ja so dringend haben will, auch ausgeworfen.return gibt einen Wert aus der Funktion an die aufrufende Stelle zurück. Dabei wird die Funktion sofort beendet....
*erleuchtet sei*
Ich war übrigens kurz davor, dass Ganze zu umgehen und durch:
Code: Alles auswählen
a=585
b=75
while b > 0:
rest = a % b
a = b
b = rest
else:
print a
Ja, das ist sicher eine uneindeutige Formulierung mit der "gegebenen Zeit", aber eindeutiger scheint mir das auch nicht formulierbar zu sein. In der Tat ist das ein Punkt, über den man diskutieren könnte, nämlich, wann dieser Zeitpunkt gekommen ist. Möglicherweise kommen wir da zu unterschiedlichen Einschätzungen, weil unser Erfahrungshorizont ein anderer ist.Leonidas hat geschrieben:Wann ist gegebene Zeit? Wenn er ein mehrere Tausend Zeilen langes Programm fertig und deployt hat und dann ein kleines Problem hat und sich rausstellt dass sein Programm hunderte ``inputs()`` hat? Ich nehme jetzt nicht an, dass du bei jedem Anfänger immer dabeistehst und guckst was sie machen. Daher bin ich dafür Anfängern *so früh wie möglich* guten Stil beizubringen.numerix hat geschrieben:Und ich finde es ebenso unproblematisch, einen Anfänger input() benutzen zu lassen und ihn zu gegebener Zeit auf die Problematik hinzuweisen.
Aber, mal ehrlich: Wer Programme mit "hunderten inputs()" schreibt, der dürfte über den Punkte "input()" oder "raw_input()" doch wohl lange hinweg sein. Ich kann mir überhaupt so ein Programm nicht vorstellen (auch nicht mit 100x raw_input()) ...
Wie du darauf jetzt kommst, weiß ich nicht. Ansonsten: Siehe Beitrag von lunar dazu.snafu hat geschrieben:Heißt das du führst deine Kritik nur an, um andere Leute auf die Palme zu bringen? Ganz großes Tennis...
@numerix: Also ich kann mir schon Anfängerprogramme mit 100erten von `input()`\s vorstellen. Das sind die Leute, die das mit Gemeinsamkeiten in Funktionen auslagern und/oder Schleifen nicht verstanden haben und letztendlich zig mal den gleichen Quelltext per Kopieren und Einfügen "schreiben".
@sea-live: Yeah! BASIC forever
@muskel: Schau Dir in dem BASIC-Programm mal die auskommentierte Zeile an (``rem``) und denk darüber nach.
@sea-live: Yeah! BASIC forever
Code: Alles auswählen
10 a=585:b=75
20 rem if a<b then t=a:a=b:b=t
30 if b=0 then print a:end
40 r=a-int(a/b)*b:a=b:b=r:goto 30
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also unter einer Banane blauer als Wolke? Kann ich absolut verstehen, das habe ich hier auch oft!sea-live hat geschrieben:mein robotter läuft unter basic (Bascom) stabiler als unter GCC
muskel, da gibt es nichts zu meckern, ihr hättet ja auch auf einem Prof. treffen können der Codebeispiele grundsätzlich in Pseudocode schreibt (der dann, da er nicht testbar ist) durchaus mal falsch sein kann und der euch funktionale Programmierung mit Java beibringen will. Insofern ist dass das ``print`` fehlt kein Problem, wenn du ein Python-Tutorial (oder Java-Tutorial), dann wirst das in der Vorlesung wohl kaum bekommen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice