2016-05-29 5 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.Seigne、この解決策があなたの質問を解決した場合、それは正しいとマークできますか? –

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で関数を定義して使用する方法についてGoogle検索を実行すると、彼はインターネットにアクセスします。

+0

残念ながら、学校向けのPythonの学習を始めました。私は、すべてのルールを覚えておくのが少し難しいと思っています。 –

関連する問題