def und return wirft nichts aus

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 10. November 2008, 11:29

Und außerdem streiten wir ja nicht ... :wink:

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.
Benutzeravatar
snafu
User
Beiträge: 5536
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Montag 10. November 2008, 12:27

Heißt das du führst deine Kritik nur an, um andere Leute auf die Palme zu bringen? Ganz großes Tennis...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 10. November 2008, 13:01

numerix hat geschrieben:Nein. das lohnt sich nicht mehr - Python 3000 ist ja im Anmarsch, dann hat sich das Thema erledigt.
So schnell wird das eher nicht gehen.
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.
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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Montag 10. November 2008, 13:13

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...
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 ...
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Montag 10. November 2008, 14:54

:oops: ICH WARS ICH WARS :oops:

binn wie immer an allem schuld BASIC forever! :roll:

scheint immer der gleiche lehrer zusein der das ggt in Python haben möchte
muskel
User
Beiträge: 6
Registriert: Sonntag 9. November 2008, 19:12

Montag 10. November 2008, 15:28

Äääähm, danke erstmal an alle! :lol:
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... :roll:

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! :D

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. :cry:
Aber Dank dem Internet bin ich schlauer geworden:

return gibt einen Wert aus der Funktion an die aufrufende Stelle zurück. Dabei wird die Funktion sofort beendet....
...und wenn ich DANN mein print erfolgen lasse, wird das Ergebnis, was ich ja so dringend haben will, auch ausgeworfen.

*erleuchtet sei* :wink:

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
auszudrücken. Klappt schließlich auch irgendwie... :P
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 10. November 2008, 15:39

Leonidas hat geschrieben:
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.
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.
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.

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()) ...
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...
Wie du darauf jetzt kommst, weiß ich nicht. Ansonsten: Siehe Beitrag von lunar dazu.
BlackJack

Montag 10. November 2008, 16:16

@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 :!: 8)

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
@muskel: Schau Dir in dem BASIC-Programm mal die auskommentierte Zeile an (``rem``) und denk darüber nach.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Montag 10. November 2008, 18:02

@ BlackJack DANKE
mein robotter läuft unter basic (Bascom) stabiler als unter GCC
gibt es eigentlich für python auch einen atmel compiler!!!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 10. November 2008, 20:36

sea-live hat geschrieben:mein robotter läuft unter basic (Bascom) stabiler als unter GCC
Also unter einer Banane blauer als Wolke? Kann ich absolut verstehen, das habe ich hier auch oft!

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 Modvoice
Antworten