2016-09-08 9 views
0

Ich habe 2 Funktionen. Wenn ich meine erste Funktion außerhalb der Funktionen anrufe, funktioniert sie. Es gibt den richtigen Wert. Wenn ich nun meine erste Funktion innerhalb meiner zweiten Funktion anrufe, gibt sie mir einen Wert von 0 zurück.Aufruf Funktion innerhalb der Funktion gibt 0

Ich verstehe nicht, was ich falsch mache. Könnte mir bitte jemand in die richtige Richtung zeigen? Sehr geschätzt!

def standaardprijs(afstandKM): 
    totaalPrijs = 0 
    if afstandKM < 50: 
     kmPrijs = 0.8 
     totaalPrijs += kmPrijs * afstandKM 
     return(totaalPrijs) 

    if afstandKM > 50: 
     totaalPrijs = totaalPrijs + 15 
     kmPrijs = 0.6 
     totaalPrijs += kmPrijs * afstandKM 
    return totaalPrijs 

def ritprijs(leeftijd, weekendrit, afstandKM): 
    totaalPrijs = 0 
    totaaalPrijs = standaardprijs(afstandKMInp) 
    print(totaalPrijs) 
    # Leeftijd 
    if leeftijd >= 12 and leeftijd <= 65: 

     if weekendRit == 'j': 
      TP2 = totaalPrijs/0.35 
      return TP2 

     else: 
      TP2 = totaalPrijs/0.3 
      return TP2 


    else: 
     if weekendRit == 'j': 
      TP2 = totaalPrijs/0.4 
      return TP2 

     else: 
      #geen korting 
      TP2 = totaalPrijs 
      return TP2 

afstandKMInp = eval(input('Hoeveel KM gaat u reizen?')) 
weekendRit = input('Weekendrit? j/n') 
leeftijd = int(input('Leeftijd: ')) 
ritprijs2 = ritprijs(leeftijd, weekendRit, afstandKMInp) 
print(ritprijs2) 
+0

Ihr Code-Snippet ziemlich kompliziert ist (und ist nicht in Englisch geschrieben ist sehr schwer zu verstehen). Kannst du bitte [MCVE] erstellen? –

+0

@Sonne Name, ich habe die Änderungen rückgängig gemacht, die Änderung des Fragecodes macht die Antworten obsolet. –

Antwort

0

Das Problem ist, Sie haben einen Tippfehler totaaalPrijs nicht totaalPrijs so alles, was Sie tun müssen, ist zu ändern:

totaalPrijs = standaardprijs(afstandKMInp) 

auch sollten Sie nicht eval, Guss Eingang int verwenden:

afstandKMInp = int(input('Hoeveel KM gaat u reizen?')) 

Sie können auch vereinfachen if leeftijd >= 12 and leeftijd <= 65 eine verkettete Vergleich mit:

if 12 <= leeftijd <= 65: 

Und Sie brauchen keine Variablen in Python zu erklären, so können Sie totaalPrijs = 0 entfernen

+0

Danke, das hat funktioniert! Jetzt habe ich ein neues Problem, das leeftijd irgendwie nicht registriert. In meiner Funktion ist die Variable leeftijd schwarz, weekernerit und afstandKM sind beide grau. Keine Ahnung was es bedeutet. Aber es ist nicht auf meinem leeftijd wenn es ist. Irgendeine Idee? EDIT: PEP8 Fehler. Schatten leeftijd von äußerer Schaufel. –

+0

@SomeName, weil wieder 'weekendRit! = Weavernagerit', ein guter Grund, warum Kleinbuchstaben und Unterstriche für Ihre Variablennamen ist eine gute Idee, funktioniert Ihr Code als die Funktion mit dem' weekendRit' Sie außerhalb der Funktion im globalen deklariert Namensraum –

+0

Wow, okay, guter Ruf. Sorry, ich habe Python gerade gestartet. Im Hauptpost bearbeitet. Aber das erklärt nicht, warum leeftijd nicht funktioniert? Wenn ich j zusammen mit leeftijd 16 eintrage, sollte es TP2 zurückgeben/drucken, aber ich bekomme nichts –

1

ritprijs(leeftijd, weekendRit, afstandKMInp)

hat diese Linie keine Nebenwirkungen. Es gibt einen Wert zurück, aber Sie ordnen es nie etwas zu.

Sie sollten den Rückgabewert einer Variablen zuweisen:

some_value = ritprijs(leeftijd, weekendRit, afstandKMInp) 
print(some_value) 
+0

Bearbeitete meinen Code. Jetzt gibt es mir noch 0 als Ausgabe. + Da ich zu jedem möglichen Ergebnis eine Rendite habe, sollte ich nicht von außerhalb meiner Funktionen drucken müssen? –

+0

@SomeName, wenn Sie den Code außerhalb einer Shell ausführen, müssen Sie drucken, um die Rückgabewerte zu sehen –

+0

Wird in PyCharm ausgeführt. Aber ich bekomme jetzt 2 Ergebnisse, beide 0. Also meine Rückkehr funktioniert –

Verwandte Themen