2016-05-29 16 views
1

每當我運行這段代碼,它告訴我在第19行distancetravelled沒有被定義,但我想我已經在函數中定義了它。謝謝你的幫助。編程新手,不明白爲什麼我不能得到這個變量來打印

startKilometre = float(input("What is the starting kilometre?")) 
finalKilometre = float(input("What is the final kilomotre")) 
finalFuel = float(input("How much fuel did you put in the car?")) 

def functionTravelled(startKilometre, finalKilometre): 
    distanceTravelled = finalKilometre - startKilometre 
    return distanceTravelled 



def functionLitresKilo(distanceTravelled, finalFuel): 
    litresPerKilometre = distanceTravelled/finalFuel 
    return litresPerKilometre 

def functionKiloLitres(finalFuel, distanceTravelled): 
    kilometresPerLitre = finalFuel/distanceTravelled 
    return kilometresPerLitre 

print(distanceTravelled) 
print(litersPerKilometre) 
print(kilometresPerLitre) 
+0

您確實在一個函數中定義了它,但是您沒有執行該函數。 :) – 2Cubed

+0

您可能想要進行一些基礎研究,例如查看[官方教程的相關部分](https://docs.python.org/3.4/tutorial/controlflow.html#defining-functions)。 – TigerhawkT3

回答

5

你永遠不會調用函數來獲取他們的返回值,因此,您的代碼運行,如:

startKilometre = float(input("What is the starting kilometre?")) 
finalKilometre = float(input("What is the final kilomotre")) 
finalFuel = float(input("How much fuel did you put in the car?")) 

print(distanceTravelled) 
print(litersPerKilometre) 
print(kilometresPerLitre) 

其中,當然,是不是你想要的。你需要調用每個函數,並返回結果存儲在變量中:

startKilometre = float(input("What is the starting kilometre?")) 
finalKilometre = float(input("What is the final kilomotre")) 
finalFuel = float(input("How much fuel did you put in the car?")) 

def functionTravelled(startKilometre, finalKilometre): 
    distanceTravelled = finalKilometre - startKilometre 
    return distanceTravelled 

def functionLitresKilo(distanceTravelled, finalFuel): 
    litresPerKilometre = distanceTravelled/finalFuel 
    return litresPerKilometre 

def functionKiloLitres(finalFuel, distanceTravelled): 
    kilometresPerLitre = finalFuel/distanceTravelled 
    return kilometresPerLitre 

distanceTravelled = functionTravelled(startKilometre, finalKilometre) 
litersPerKilometre = functionLitresKilo(distanceTravelled, finalFuel) 
kilometresPerLitre = functionKiloLitres(finalFuel, distanceTravelled) 

print(distanceTravelled) 
print(litersPerKilometre) 
print(kilometresPerLitre) 
+0

非常感謝。 –

+0

@ H.Heigne一點都不存在問題,如果這個解決方案解決了你的問題,那麼你能把它標記爲正確嗎? –

1

您試圖打印一個不存在的變量。該變量在您的functionTravelled函數中進行本地定義。你想打印這些函數返回的內容(並且你永遠不會真的調用你的函數)。

例如 -

startKilometre = float(input("What is the starting kilometre?")) 
finalKilometre = float(input("What is the final kilomotre")) 
finalFuel = float(input("How much fuel did you put in the car?")) 

def functionTravelled(startKilometre, finalKilometre): 
    distanceTravelled = finalKilometre - startKilometre 
    return distanceTravelled 

travelled = functionTravelled(startKilometre, finalKilometre) 
print(travelled) 

同樣爲您的其他打印語句/函數。

1

有點像「什麼在拉斯維加斯的推移,留在拉斯維加斯」,你定義的函數的變量,它是不可見的外功能。這是有目的的完成的,所以你不必擔心在函數中爲變量使用唯一的名稱。

您的函數是爲返回變量的值而構建的,因此只需調用它們即可。在這裏,我通過調用函數在全局範圍內分配變量。

startKilometre = float(input("What is the starting kilometre?")) 
finalKilometre = float(input("What is the final kilomotre")) 
finalFuel = float(input("How much fuel did you put in the car?")) 

def functionTravelled(startKilometre, finalKilometre): 
    distanceTravelled = finalKilometre - startKilometre 
    return distanceTravelled 



def functionLitresKilo(distanceTravelled, finalFuel): 
    litresPerKilometre = distanceTravelled/finalFuel 
    return litresPerKilometre 

def functionKiloLitres(finalFuel, distanceTravelled): 
    kilometresPerLitre = finalFuel/distanceTravelled 
    return kilometresPerLitre 

distanceTravelled = functionTravelled(startKilometre, finalKilometre) 
print(distanceTravelled) 

etc.... 
0

看起來您需要對函數的定義和調用做更多的研究。你正在將它們想象成爲了有趣的代碼塊,並沒有實際的理由被使用。不是這種情況。函數被定義,然後被調用,在這一點上他們返回一個值給調用者。下面是不是一個函數:

a = 0 
print(a) 

將其組合成一個功能不相同的方式工作,如在這個精簡版,你在做什麼:

def x(): 
    a = 0 
    return a 
print(a) 

功能必須通過他們的實際名字叫,你可能希望保存得到的返回值:

def x(): 
    a = 0 
    return a 
var = x() 
print(var) 

您可以瞭解更多關於the official tutorial's section on defining functions功能,以及對T許多其他地方他互聯網,如果你運行谷歌搜索如何定義和使用Python中的功能。

+0

對不起,剛開始學習Python的學校。我發現記住所有規則有點困難。 –

相關問題