2016-09-08 62 views
0

我有2個函數。如果我從函數之外調用我的第一個函數,它就可以工作。它給出了正確的價值。現在如果我在第二個函數中調用第一個函數,它會返回值爲0.函數內部調用函數返回0

我不明白我在做什麼錯誤。有人可以在這裏指出我正確的方向嗎?非常感激!

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

您的代碼段相當複雜(並且沒有被用英文書寫很難理解)。你可以創建[MCVE]嗎? –

+0

@Sone Name,我回滾了編輯,改變你的問題代碼使答案過時。 –

回答

0

的問題是你有一個錯字totaaalPrijs沒有totaalPrijs因此,所有你需要做的是改變:

totaalPrijs = standaardprijs(afstandKMInp) 

您也不應該使用評估,鑄輸入爲int:

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

您還可以使用鏈式比較簡化if leeftijd >= 12 and leeftijd <= 65

if 12 <= leeftijd <= 65: 

而且你不需要在python聲明變量,所以你可以刪除totaalPrijs = 0

+0

謝謝,這工作!現在我遇到了一個新問題,它不是以某種方式註冊leeftijd。在我的函數中,變量leeftijd是黑色的,weekendrit和afstandKM都是灰色的。不知道這意味着什麼。但如果是這樣的話,它並沒有在我的leeftijd上撿起來。任何想法?編輯:PEP8錯誤。來自外sc的陰影leeftijd。 –

+0

@SomeName,因爲再次'weekendRit!= weekendrit',爲你的變量名使用小寫和下劃線是個好主意的好理由,你的代碼在函數使用你在全局函數之外聲明的'weekendRit'名字空間 –

+0

哇,好的電話。對不起,剛開始python。在主帖中編輯。但這並不能解釋爲什麼leeftijd不工作?如果我和leeftijd 16一起輸入j,它應該返回/打印TP2,但是我什麼也沒得到 –

1

ritprijs(leeftijd, weekendRit, afstandKMInp)

此行有沒有副作用。它會返回一個值,但您永遠不會將其分配給任何東西。

你應該返回值賦值給一個變量:

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

編輯我的代碼。現在它仍然給我0作爲輸出。 +因爲我得到了所有可能結果的回報,所以我不應該從我的功能之外進行打印? –

+0

@SomeName,如果您在shell外運行代碼,則需要打印才能看到在PyCharm中運行的返回值 –

+0

。但我現在得到2個結果,都是0.所以我的回報正在工作 –