2016-05-29 15 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的学校。我发现记住所有规则有点困难。 –

相关问题