Python Tutorial #14 - Default Werte für Funktionsargumente

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ธ.ค. 2024

ความคิดเห็น • 123

  • @paul5252
    @paul5252 9 ปีที่แล้ว +67

    Step by step wirds immer schwerer, aber ich kann mich mit deiner Art es zu erklären, sehr gut auseinandersetzen. Ich find deine Videos gut und ich hoffe, dass ich den Stoff vom Anfang zum Schluss auch noch kenne.
    Hab mich heute gewundert, warum meine while-Schleifen nicht funktioniert haben, weil ich break und continue ausprobiert habe. Nunja, hab den Doppelpunkt vergessen. Hat knapp ne Stunde gedazert bis ichs bemerkt habe xD

    • @ingmarfalk3306
      @ingmarfalk3306 3 ปีที่แล้ว

      fühl ich, manchmal hab ich so eine Sache bei der ich Stunden lang struggle nur um dann zu merken, dass es irgendein komplett banaler fehlrer war :/

    • @calypso9684
      @calypso9684 3 ปีที่แล้ว +1

      ist wirklich anspruchsvoll ich glaub man müsste erstmal wissen und verstehen was fib-zahlen eigentlich sind rein mathematisch wirklich wichtig ist die sache mit dem return ein sehr einfaches beispiel
      def bmi(weight,height):
      x = weight/(height*height)
      return x
      a=75
      b=1.88
      result = bmi(a,b)
      print(result)

  • @noofuumanjaro3268
    @noofuumanjaro3268 5 ปีที่แล้ว +2

    Deine Video's sind echt gut, sprichst ab und an etwas hektisch :) Ich hoffe das ich irgendwann Python verstehe. Habe mir zusätzlich auch noch ein Buch gekauft Python 3 Programmieren für Einsteiger. Aber auch da bin ich bei einem Kapitel und denke mir so woher soll man das alles wissen oder sich merken :) :)

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +2

      Danke für dein Feedback :)
      Als Hilfe ist es sehr nützlich, ein eigenes Projekt zu verfolgen, das hilft dir da sehr

    • @noofuumanjaro3268
      @noofuumanjaro3268 5 ปีที่แล้ว

      @@TheMorpheusTutorials Ja habe mir da schon eins vorgenommen, aber dann weiß man halt nicht weiter :)
      print("Persönlicher kcal Rechner",("
      "))
      Kartoffel = eval(input("Wieviel Gramm Kartoffeln?: "))
      Thunfisch = eval(input("Wieviel Gramm Thunfisch?: "))
      Milch = eval(input("Wieviel Millilieter Milch?:"))
      Reis = eval(input("Wieviel Gramm Reis?:"))
      tagesbedarf = eval(input("Dein Tagesbedarf kcal: "))
      K = Kartoffel * 0.7
      T = Thunfisch * 1.11
      M = Milch * 0.48
      R = Reis * 1.26
      liste = K + T + M + R
      print(["kcal",liste],("
      "))
      print(M,"kcal", "Milch", ("
      "))
      print(K,"kcal", "Kartoffeln", ("
      "))
      print(T,"kcal", "Thunfisch", ("
      "))
      print(R,"kcal", "Reis", ("
      "))
      print(liste,"Gesammte kcal")
      print(tagesbedarf - liste, "kcal stehen noch zur Verfügung.")
      L = tagesbedarf - liste
      if L < 0:
      print("Achte auf deinen Maximalen Tagesbedarf, leider überschritten!")
      else:
      print("Achte darauf das du den Tagesbedarf noch aufbrauchst!")

    • @noofuumanjaro3268
      @noofuumanjaro3268 5 ปีที่แล้ว

      Das funktioniert so, gefällt mir aber nicht :) weil ich gerne Abfragen möchte , was hast du gegessen ... dann gibt man z,B Kartoffeln ein und dann kommt eben die frage wie viel Gramm: dann gibt man die Gramm ein und zack steht das Ergebnis da
      und es sollte wie jetzt auch mit dem Tagesbedarf verrechnet werden

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +1

      Dann brauchst du wohl eine Datenbank (zb in einer Textdatei), die Essen Kalorien zuweist :)

  • @trojaner01
    @trojaner01 7 ปีที่แล้ว +11

    9:38 if-schleife ;P

  • @plasis8889
    @plasis8889 5 ปีที่แล้ว +1

    Super hilfreiche playlist...😍😍

  • @koenigmaurice
    @koenigmaurice 6 ปีที่แล้ว +14

    Kannst du dir die Programmiersprachen, die du lernst auch merken?
    Nach 2 - 3 Wochen vergesse ich schon ein paar Sachen.
    Die Basics sitzen, aber so komplexeres Zeug geht weg :D

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว +14

      Wenn man mal die einzelnen Befehle vergisst, gibts ja immer schnell die Docs zur Hand. Aber ja, auch ich vergesse mal Befehle :D

  • @timweissenfels5353
    @timweissenfels5353 5 ปีที่แล้ว +4

    Nett to know: In C++ ist diese „Richtlinie“ aus 2:53 im Standard und wird vom Compiler erzwungen.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +3

      Danke für den Fun Fact :)

    • @jeyt436
      @jeyt436 2 ปีที่แล้ว

      Und Python wurde ja in C++ geschrieben...

  • @davidinawe791
    @davidinawe791 4 ปีที่แล้ว +1

    Bin grad leicht verwirrt, bei 10:33 sagst du die standardargumente werden nur ein einziges mal beim code durchlaufen initialisiert, wieso ist dann beim zweitendurchgang nicht L=42 wodurch der if satz nicht aufgerufen würde und ich wieder zwei mal 42 hab? sorry falls die Frage dumm ist^^

  • @active6k475
    @active6k475 4 ปีที่แล้ว

    Irgendwie geht es mir nicht in den Kopf. 8:00 Warum return L? wenn er doch zu f(L=[]): springt und sich wieder runter zu return L arbeitet ist es nicht eine endlosschleife? Bei 10:00 komtm es mir so vor als würde der compiler bei Zeile 13 anfangen, auf f wandern und anschließend Zeile 14. Jedoch ist dort wieder return L??

  • @einfachapps8004
    @einfachapps8004 8 ปีที่แล้ว +9

    Nur zur Info: Man kann in Java oder C++ auch Funktionsparametern einen Standardwert zuweisen.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว +1

      In Java kenne ich da keine Möglichkeit, zumindest ging es vor kurzem auf jeden Fall noch nicht.
      Magst du mich erleuchten? =)

    • @einfachapps8004
      @einfachapps8004 8 ปีที่แล้ว +1

      Hi, da liegst du richtig. Hab das in Java mit dem Constructor verwechselt. Aber in C++ und in php muesste es Standardwerte als Funktionsparameter geben. Aber nicht so wichtig, hier gehts ja um python. Tooles Turorial jedenfalls! Werde mir all deine Videos zu python ansehen. Weiter so :-)

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว +1

      okay, dachte schon sie hätten wieder was Neues eingeführt. Ähnlich wie die default-Implementierungen im Interface, das hat doch Einiges verändert.
      Danke =) Freut mich, wenn sie dir gefallen =)

    • @lordfritte
      @lordfritte 7 ปีที่แล้ว

      In einer anderen script-Sprache PHP geht es auch.

    • @useless4463
      @useless4463 6 ปีที่แล้ว

      The Morpheus Tutorials Ich weiß es ist etwas länger her aber in Java kann man mit 3Zeilen Code den Standard Wert einer Variable festlegen

  • @ghalebevaldo4416
    @ghalebevaldo4416 3 ปีที่แล้ว

    Ich verwende die lustige Formel für die Fibonacci Funktion. Ich empfehle vs Code als Editor. Nutze ich sogar auf dem Mac. Und für latex ebenfalls zur Info

  • @Kawa-Kaze
    @Kawa-Kaze 4 ปีที่แล้ว

    Eine Frage, wie kann ich Variablen benutzen die ich in einer anderen Funktion definiert habe?
    Bei mir kommt da immer raus, dass die Funktion die ich benutzen möchte nicht existiert obwohl sie in der Funktion existiert.

  • @lupinholmes6167
    @lupinholmes6167 4 ปีที่แล้ว +1

    Hey, gutes Video, aber eine Frage habe ich noch. Ich verstehe den kleinen Trick mit dem None nicht so ganz. Wenn vorher (mit L=[]) der Standardwert nur einmal abgelesen wurde und danach die 42 in der Liste gespeichert war, warum ist es nicht auch bei dem Standardwert L=None so? Wieso wird die Liste immer wieder auf L=None gesetzt?

    • @Moritz-Voigt
      @Moritz-Voigt ปีที่แล้ว

      Die Frage habe ich mir auch gerade gestellt, so wie ich das programm verstehe macht es genau dasselbe wie vorher. Wenn er keinen Wert hat (None) wird es zu einer leeren Liste. Dann wird unabhängig davon eine 42 angehangen und dieser Wert zurückgegeben.
      Beim zweiten Aufruf ist der Wert L nicht mehr None, also wird der If Block übersprungen es werden wieder 42 angehangen und wie wird zurückgegeben. -> also steht beim zweiten Aufruf 42, 42 da. So verstehe ich das, aber ist ja anscheinend nicht so. Warum?

  • @shiverello6109
    @shiverello6109 4 ปีที่แล้ว +1

    Ich habe am Anfang das Video pausiert um es zuerst selbst zu versuchen. Mein Ansatz ist actually viel effizienter; Ich habe die Fibonacci Zahlen von 0, 1 angefangen in eine Liste generiert. Das ist so schnell, ich habe in ca. drei Sekunden die ersten Zehntausend Fibonacci Zahlen generiert. Hab aber auch n guten Prozessor

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  4 ปีที่แล้ว

      Das ist die effiziente Variante 👍 aber die eignet sich nicht so gut als Beispiel hier 😂

    • @shiverello6109
      @shiverello6109 4 ปีที่แล้ว +1

      @@TheMorpheusTutorials Danke für die Antwort, deine Videos sind allesamt super hilfreich, weiter so^^

  • @cihadcihad8802
    @cihadcihad8802 5 ปีที่แล้ว +3

    Ich habe zwei Fragen:
    Wenn ich statt „Return L“ einfach Print(strL)
    Print (f())
    Kommt [42]
    None
    Raus. Wieso none ?
    Und Wie kann ich statt [42] beispielsweise [a] machen ?
    LG und Danke schonmal im Voraus ☺️

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +6

      Hey,
      also da ist ein fundamentaler Unterschied drin:
      print(x) gibt x auf der Kommandozeile aus, sodass es gelesen werden kann
      return x gibt x als Ergebnis der Funktion an den Aufrufer zurück, um damit weiter rechnen zu können.
      bei plus(a,b):
      return a+b
      und dem Aufrufer
      ergebnis = plus(a,b)
      speicherst du das Ergebnis in ergebnis ab und kannst damit dann weiter rechnen. Wenn du aber print statt return verwendest, ist in Ergebnis nichts drin, sondern du hast es nur auf der Kommandozeile sichtbar ausgegeben.
      bei deinem
      print(f()) wird also eigentlich zuerst f() ausgeführt. Da steht ein print drin, was [42] ausgibt. Die Funktion gibt aber nichts zurück. Also ist das Ergebnis von f() none (zu deutsch, nix) und es wird none noch zusätzlich ausgegeben.
      Deine 2. Frage:
      Wenn du Buchstaben in Listen haben willst machst du einfach
      meineListe = "hallowelt"
      Das ist auch eine Liste, mit meineListe[1] kommst du zB auf das a.
      Du kannst aber auch meineListe = ['a'] schreiben
      vergiss dann aber die Anführungszeichen nicht

    • @cihadcihad8802
      @cihadcihad8802 5 ปีที่แล้ว +5

      @@TheMorpheusTutorials super cool ich finds immer herrlich wie ausführlich du das ganze beantwortest :):):) danke danke LG

  • @VeLoc1ty_
    @VeLoc1ty_ 2 ปีที่แล้ว +1

    Ich habe eine Frage: warum braucht man das: 'if L is None' wenn mann davor geschrieben hat L = None ?

    • @HolyBullShit
      @HolyBullShit 2 ปีที่แล้ว

      Weil du beim Aufruf der Funktion auch eine Liste mitgeben kannst, an die dann etwas angehongen wird. In dem Fall wäre L dann nicht none und es muss keine neue Liste erstellt werden!

  • @florianbabel5558
    @florianbabel5558 2 ปีที่แล้ว

    9:40 IF-SCHLEIFE

  • @peterbischoff8577
    @peterbischoff8577 6 ปีที่แล้ว

    Wieso fügst du denn bei 9:30 noch die If- Abfrage ein? Das funtioniert doch auch ohne die Abfrage (zumindest bei mir)...

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      Also eigentlich solltest du, wenn du dann keinen Parameter übergibst, nen Fehler bekommen

  • @JonyXL44
    @JonyXL44 7 ปีที่แล้ว +1

    Eine Frage: Du sagst ja meistens immer Compiler. Müsste es bei Python nicht eigentlich Interpreter heißen?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว +6

      Ja, tut mir leid, ist ne Angewohnheit..
      Es gibt zwar eine Möglichkeit Python Scripts zu kompilieren, aber wir nutzen eigentlich den Compiler

  • @clonk5084
    @clonk5084 4 ปีที่แล้ว +1

    Super erklärt :)
    Nur eine kleine Frage wieso reicht nicht print(f) sondern print(f()) ?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  4 ปีที่แล้ว +2

      Weil du noch die Funktion aufrufen musst, damit das Ergebnis kommt. Dazu die klammern 😉

  • @carcube6814
    @carcube6814 4 ปีที่แล้ว +1

    Ich habe noch eine Frage: ist Return nicht einfach ein einfacheres print() für Funktionen? Wäre echt nett wenn du antworten würdest 😄👻

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  4 ปีที่แล้ว +1

      Nicht ganz, wenn du was printest kannst du danach nicht mehr damit arbeiten :)

    • @carcube6814
      @carcube6814 4 ปีที่แล้ว

      @@TheMorpheusTutorials Achso danke ^^

  • @simonhuber2018
    @simonhuber2018 7 ปีที่แล้ว

    4:43 die Funktion 'fib' wird doch erst in der Zeile 7 aufgerufen und 'i' ist in Zeile 6 definiert. Wieso geht das nicht?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว +1

      Weil wir es in der Funktion als globale Variable nicht als Parameter genutzt haben. Als Parameter müsste es beim Aufruf in den Klammern stehen, also fib(i).

    • @simonhuber2018
      @simonhuber2018 7 ปีที่แล้ว +1

      ok das macht irgendwo Sinn, danke

  • @MaKi-dr6jk
    @MaKi-dr6jk 5 ปีที่แล้ว

    Bei der Erzeugung einer komplett neuen Liste (ca. 10. Min) wird L.append(5) nicht in die if-Bedingung eingerückt => D.h. L.append(5) wird immer ausgeführt, egal was die if-Bedingung sagt. Muss man das auch nicht in die if-Bedingung einrücken??

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +1

      Du musst gar nichts, das war hier Absicht, ich wollte dass das Objekt immer eingefügt wird :) Geht ja drum, dass falls keine Liste angegeben wird, eine Liste erstellt wird

  • @mondkult
    @mondkult 8 ปีที่แล้ว

    Optionale Parameter können normal alle Sprachen, man muss sie nur Zuletzt eingeben, nach der Optionale Parameter darf kein Parameter ohne Optionen mehr kommen!
    Richtig
    def get_pow(self, x, y=2):
    oder
    def get_pow(self, x=5, y=2):
    Falsch
    def get_pow(self, x=5, y):

    • @troi951
      @troi951 8 ปีที่แล้ว

      +mondkult Zumin. gibt es in Java und wahrscheinlich allen anderen OO-Sprachen überladene Methoden, bedeutet zwar mehr Code aber wäre möglich. Das macht Python dann in einer Zeile im Vergleich zu Java.

  • @markuss4020
    @markuss4020 8 ปีที่แล้ว +10

    Ca. 9:50 if-schleife.de

    • @markuss4020
      @markuss4020 8 ปีที่แล้ว +2

      Nicht falsch verstehen! Ich finde die Videos sehr gut! :)

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว +3

      +Markus S verdammt. Hab ich das hier echt gesagt? -.- :D

    • @_agent47_
      @_agent47_ 3 ปีที่แล้ว

      Dafür gibts ne eigene Seite hahahahaha

  • @friedsoftunity0535
    @friedsoftunity0535 6 ปีที่แล้ว +4

    In C# gibts auch Default Argumente :D

  • @tonikaiser2823
    @tonikaiser2823 5 ปีที่แล้ว

    Tach, kurze Frage, kompiliert das Python automatisch? Weil wenn du es mit dem cmd aufrufst dann geht es ja.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว

      Python wird interpretiert, sofern du nicht Tools wie Py2Exe oder PyInstaller nutzt :)

    • @tonikaiser2823
      @tonikaiser2823 5 ปีที่แล้ว

      @@TheMorpheusTutorials Achso interpretiert heißt dass es sofort beim ausführen übersetzt wird oder?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว

      genau :)

  • @svenbaumgartner985
    @svenbaumgartner985 6 ปีที่แล้ว

    Wenn ich genauso wie du
    def f(L=[ ]):
    L.append(42)
    return L
    print(f( ))
    eingebe, kommt merkwürdigerweise
    y
    [42]
    raus. Woran könnten das liegen?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      also abgesehen von dem y stimmt alles :D
      Gibst du das eventuell noch früher aus?

    • @svenbaumgartner985
      @svenbaumgartner985 6 ปีที่แล้ว

      Hab das ganze nochmal in einer neuen Datei niedergeschrieben und jetzt wird mir das ganze ohne y angezeigt. Ist aber trotzdem komisch, da ich extra darauf geachtet habe, dass sich da nirgendwo ein y eingeschlichen hat.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      das ist ja seltsam..

  • @timmyschmitz2059
    @timmyschmitz2059 6 ปีที่แล้ว

    Hallo Morpheus,
    kann man Methoden auch wie in Java überladen? Und wenn ja, wie wird das gemacht, wenn man z.B. eine Funktion f(i=5) und eine Funktion f() deklariert und man nun f() aufruft?
    Schon Mal danke im voraus

  • @goral9033
    @goral9033 5 ปีที่แล้ว +3

    Ich bin mir sicher, dass in einer Morpheus-Folge das 42. Element 1337 wäre :P

  • @Lorenzo_der_Ritter
    @Lorenzo_der_Ritter ปีที่แล้ว

    wozu brauchen wir das mit dem None überhaupt? Man könnte doch auch einfach in der Funktion als erstes L = [] schreiben, dann wird die Liste auch bei jedem Aufruf erst mal auf eine leere Liste zurückgesetzt.

  • @enricojanssen1709
    @enricojanssen1709 7 ปีที่แล้ว +1

    j=2
    def vid13 (q, w, g=j):
    return w, q, g
    varvid13=vid13(13,3)
    print(varvid13)
    Warum wird mir in der Kommandozeile (3,13,2) ausgegeben und nicht 3,13,2 ohne die Klammern ?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      weil du ein Tupel zurückgibst. Das passiert immer, wenn man mehrere Ergebnisse aus einer Funktion zurückgibt.

    • @enricojanssen1709
      @enricojanssen1709 7 ปีที่แล้ว

      The Morpheus Tutorials Wie kann man kein Tupel(was heisst das?) zurückgeben?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      Ein Tupel ist sozusagen eine Sammlung an verschiedenen Variablen.
      Wenn du mehr als ein Element zurückgeben möchtest, bleibt dir nur ein Tupel oder eine Liste (die müsstest du erst bauen)
      Du kannst aber ganz einfach mit varvid13[0] zum Beispiel das erste Element des Tupels auslesen.

    • @enricojanssen1709
      @enricojanssen1709 7 ปีที่แล้ว

      The Morpheus Tutorials Danke:-)

  • @reinholdfregin6391
    @reinholdfregin6391 6 ปีที่แล้ว

    Hallo Morpheus,
    ich verstehe nicht ganz warum bei 8:40 zweimal eine 42 angehängt wird.
    Code: Zeile : 7: die Funktion f wird definiert und hat als standart wert eine "Leere Liste" L
    8: Die Funktion f hängt 42 an die Liste (Egal ob die liste befüllt ist oder nicht. Wir haben da schließlich noch keine if abfrage)
    9: Diese Liste wird als ergebnis zurückgegeben
    Beim ersten aufruf von "f" wird keine Liste übergeben. Der Standard Parameter ist die Liste "L" die aber als leere Liste definiert wird. (Ich glaube hier liegt mein verständnisproblem)
    Beim zweiten aufruf von "f" wird wieder kein Parameter übergeben. Jetzt sollte doch L wieder als leere Liste definiert werden. Ich habe ja "L" nirgendwo global definiert sondern nur im Rahmen der Funktion f. Wird nach einem aufruf L nicht dynamisch erzeugt und nachdem beenden wieder gelöscht?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      Hey,
      ja, das ist leider eine Python Eigenheit, L wird hier implizit so definiert, dass es wiederverwendet wird. Sofern du nichts anderes übergibst. Daher sollte man eigentlich nur primitive Werte an die Funktion als Standardargument übergeben.
      Danke fürs Fragen & Ergänzen!

    • @MhLiMz
      @MhLiMz ปีที่แล้ว

      @@TheMorpheusTutorialsDann verstehe ich aber die zweite Version nicht, da wo L=None in den Argumenten steht. Bei der ersten Version f(L=[]) wird beim zweiten Aufruf kein Argument übergeben, aber L wird nicht als leere Liste initialisiert, weil L vom ersten Durchlauf noch einen Wert gespeichert hat.
      Bei der zweiten Version, wird beim zweiten Aufruf auch kein Argument übergeben, dennoch merkt sich die Funktion nicht die Liste vom ersten Aufruf sondern initialisiert L mit None.
      Fazit: Bei f(L=[]) verliert L nicht den Wert, nachdem die Funktion durchlaufen wurde, aber bei f(L=None) verliert L den Wert nach dem Durchlauf? Das ist nicht konsistent.

  • @__tom559
    @__tom559 6 ปีที่แล้ว

    Ich verstehe den Return command nicht ganz kann mir den einer erneut erklaeren?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว +4

      Stell dir am besten eine mathematische Funktion wie "addieren" vor. Du kannst addieren(1,2) verwenden, das gibt dann 3 zurück. Du willst aber logischerweise das ganze nicht einfach nur anzeigen, sondern in deinem Code weiter verwenden können.
      Also sagst du
      ergebnis = addieren(1,2)
      also steht in ergebnis der Return-Wert (das Ergebnis der Berechnung) von addieren(1,2) drin - also 1+2, also 3.
      Du kannst das jetzt genauso gut mit anderen Werten machen, 5 und 6, dann ist der Return-Wert 11 etc.
      Du brauchst das halt, um das Ergebnis in eine weitere Variable schreiben zu können, damit du damit weiter rechnen kannst

  • @sirmaurice.-
    @sirmaurice.- 5 ปีที่แล้ว

    Ich habe immer das Problem, dass er bei mir Listen als Integers definiert.
    Code:
    def f(L=[ ]):
    L.append(42)
    return L
    print(f())
    Fehlermeldung:
    Traceback (most recent call last):
    File "Default-Werte.py", line 5, in
    print(f(1))
    File "Default-Werte.py", line 2, in f
    L.append(42)
    AttributeError: 'int' object has no attribute 'append'

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว

      Deine Fehlermeldung sagt mir was andres.. Du hast 1 als Parameter übergeben..

    • @sirmaurice.-
      @sirmaurice.- 5 ปีที่แล้ว

      @@TheMorpheusTutorials Ich hab vergessen zu speichern 😅

  • @tostupidforname
    @tostupidforname 7 ปีที่แล้ว +1

    4:54
    Müsste er fib() nicht erst bei var = fib() aufrufen(bzw erst dann nach einem i suchen)?
    Davor wird die Funktion doch nur definiert.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      Ja, das stimmt, das meinte ich ja auch. Aber dann halt in der Funktion gleich mehrere Male.

  • @Atalanttore
    @Atalanttore 8 ปีที่แล้ว

    Hallo Morpheus,
    in diesem Programm blicke ich nicht ganz durch, wie der Wert von n bei jedem Schleifendurchlauf geändert wird. Könntest du das bitte nochmal Schritt für Schritt erklären?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว

      Wird hier erklärt: th-cam.com/video/qLRY2zGXovc/w-d-xo.html

    • @Atalanttore
      @Atalanttore 8 ปีที่แล้ว

      Vielen Dank für den Link und habe ich schon angeschaut, aber ganz verstanden habe ich immer noch nicht was im Hintergrund da alles vor sich geht.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว +1

      Okay, also es geht darum, dass sich die Funktion immer wieder selbst aufruft, aber mit anderen Parametern.
      Ich kann dir wirklich nur empfehlen, für die Berechnung mal selbst von Hand durch, das ist super :)

    • @Atalanttore
      @Atalanttore 8 ปีที่แล้ว

      Ich bin das Skript mit dem Debugger durchgegangen (Ja, Video aus einem anderen Tutorial) und die Variable n wurde bei jedem Durchlauf um 1 verringert. Aber als der Wert bei 0 angekommen war, stieg der Wert wieder und da konnte ich es nicht mehr nachvollziehen.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว +1

      das liegt daran, dass die Funktion erst aufgerufen wird, aber der Wert dann durch diesen Aufruf berechnet wird.
      du hast am Anfang zb
      fib(3)
      der braucht zum Ergebnis berechnen
      fib(2) und fib(1)
      fib(2) braucht fib(1) und fib(0)
      fib(1) ist 1
      fib(0) ist 0
      Dann erst kannst du fib(2) fertig berechnen als 1
      und dann erst fib(3) als fib(2) + fib(1) = 1+1 = 2

  • @tomatentheo6316
    @tomatentheo6316 5 ปีที่แล้ว

    ...und vor der 2 ein Komma setzen?
    Mit einer for Schleife in Java kann ich das machen

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว

      Ich weiß leider nicht genau, was du meinst

    • @tomatentheo6316
      @tomatentheo6316 5 ปีที่แล้ว

      @@TheMorpheusTutorials ...achso, immer blöde, wenn man was aus dem Kontext heraus beantwortet, entschuldige.
      Bei der Parameterübergabe meist Du, dass man dann den Standard Wert nach rechts setzen soll. Meine Frage bezieht sich darauf, ob es möglich ist als zum Beispiel: fib (,4,5) als Parameterübergabe nutzen. In Java kann ich doch bei einer for - Schleife, wenn ich die Zählervariable vorher definiert habe, den Startwert weglassen. Lediglich den die Vergleichsbedingung und je die Integration muss ich dann angeben. Daher dachte ich, dass es evtl. bei der Parameterübergabe in Python möglich sei.
      Hoffe konnte es einigermaßen erklären. ..

  • @chupapimunanyo2596
    @chupapimunanyo2596 7 ปีที่แล้ว

    was ist der unterschied zwischen return und print ?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      return gibt den Wert als Ergebnis einer Funktion für weitere Berechnungen zurück.
      Print gibt nur auf der Kommandozeile aus. Damit kannst du nicht weiterrechnen

  • @easypy
    @easypy 2 ปีที่แล้ว

    Super erklärt, kommt aber bei mir nicht oft zur Verwendung:)

  • @Heiko_Jantz
    @Heiko_Jantz 8 หลายเดือนก่อน

    Ja, jetzt wird es schwieriger. Da gebe ich zu, ich habe es noch nicht verstanden. Ich meine bei C/C++ ist es nicht so kompliziert mit den Defaultwerten.
    LG Heiko
    PS: Ich wüßte jetzt aber auch keinen Einsatzzweck für die Defaultwerte.

  • @jonnywinkler6328
    @jonnywinkler6328 5 ปีที่แล้ว

    Sehr ausführliches Video. Ich verstehe nur nicht ganz wir das mit der Funktion funktioniert (None).
    Warum nimmst du f wenn du definierst, das verstehe ich nicht ganz.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว

      Ich fürchte ich verstehe die Frage nicht ganz, schreib mir bitte in discord

  • @SirJonithan
    @SirJonithan 6 ปีที่แล้ว

    ich habe auch eine kleine sache noch nicht verstanden: wenn ich es richtig verstanden habe arbeitet python einfch von oben nach unten durch... wieso kann man dann aber den ersatzwert nicht nach der
    def fib zeile festlegen/verändern obwohl ja in zeile 7 erst festgelegt wird ob dieser wert (oder eben ein anderer den man dann ja auch erst in zeile 7 definiert hat) verwendet wird
    also: mein problem den ersatzwert muss man am anfang definieren obwohl der wirkliche wert der verwendet wird wenn man einen angiebt javiel später definiert ist

    • @SirJonithan
      @SirJonithan 6 ปีที่แล้ว

      also mit zeile 7 meine ich die zeile mit var = fib (x)

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      Das liegt daran, dass die Funktion sonst einen Wert auf jeden Fall erwartet, auch wenn du keinen abgeben willst. Das hier ist im Endeffekt nur eine Annehmlichkeit für den Programmierer

  • @j-mr-t4025
    @j-mr-t4025 7 ปีที่แล้ว

    Da isse wieder die gute alte if-schleife.de/ xD

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      den Fehler hab ich glaub auch schon woanders gemacht, habs dort schon verbessert, ja mir ist bewusst, dass es eine Kontrollstruktur ist, ein Pfadverzweigung und keine Schleife, da man ja nur einmal durch geht :P

    • @j-mr-t4025
      @j-mr-t4025 7 ปีที่แล้ว

      The Morpheus Tutorials Erstens: cool dass du selbst Kommentare von alten Videos noch liest! Zweitens: Ich bin im Moment erst bei folge 17 oder so und vielleicht erklärst du folgendes noch aber ich frage trotzdem mal: wie macht man einen timer der alle x Milli Sekunden ausgeführt wird aber in einem eigenen thread(komme von Java und da gibt es sowas ja wie z.b. Timer aktualis = new Timer();
      aktualis.scheduleAtFixedRate(new TimerTask(){
      .... ,) dort kann man ja einfach eine if-abfrage alle x Millisekunden wiederholen aber der Code der danach kommt wird trotzdem weiter ausgeführt nicht wie bei einer While Schleife, wie geht sowas in Python? Schonmal Danke im Voraus ;).

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      Die time.sleep(t) Methode lässt deinen Thread für t Sekunden schlafen :)

  • @teeraucher
    @teeraucher 9 ปีที่แล้ว

    also das tut ist zwar nach wie vor recht ok aber ich muss sagen die Aussage das es Standard werte in den meisten programmier Sprachen nicht gibt ist ja wohl Quatsch. Es fällt mir keine einzige ein bei der das der fall währe und ich glaub nach sechs Jahren Berufserfahrung müsste mir schon mal eine aufgefallen sein.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  9 ปีที่แล้ว

      +derDere ganz spontan: Java hat keine Defaults für Funktionen.

    • @teeraucher
      @teeraucher 8 ปีที่แล้ว

      +The Morpheus Stimmt jz wo du's sagst. Hatte ich garnicht dran gedacht, mein Fehler. Alle anderen Sprachen die mir jz noch einfallen können's aber schon (VB,C#,C++,AS3,Js,PHP,Sql) für die kann ich's mit Sicherheit sagen. Ich denke das sind so die "Großen". Falls jemand noch Sprachen kennt die keine Standard-Parameter beherrschen könnt ihr die gern dazu schreiben würde mich nämlich noch interessieren. Einfach um's mal im Kopf zu haben.

    • @teeraucher
      @teeraucher 8 ปีที่แล้ว

      +The Morpheus ach ich depp xD das Java das net kann sagste ja sogar.

  • @jonathanw2128
    @jonathanw2128 6 ปีที่แล้ว

    Die If-Schleife 😅😂

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว +1

      :D Lies mal durch die andren Kommentare, bist nicht der erste :P

  • @timsagichnicht
    @timsagichnicht 2 ปีที่แล้ว

    Digga dein mike man

  • @paul5252
    @paul5252 9 ปีที่แล้ว +1

    Step by step wirds immer schwerer, aber ich kann mich mit deiner Art es zu erklären, sehr gut auseinandersetzen. Ich find deine Videos gut und ich hoffe, dass ich den Stoff vom Anfang zum Schluss auch noch kenne.
    Hab mich heute gewundert, warum meine while-Schleifen nicht funktioniert haben, weil ich break und continue ausprobiert habe. Nunja, hab den Doppelpunkt vergessen. Hat knapp ne Stunde gedazert bis ichs bemerkt habe xD