2017-02-26 7 views
-2

ここに私のコードがあります。入力文の代入から自分の値を変更することができないようです。私がPythonから慣れていないいくつかのスコープ規則はありますか?スコープの問題はありますか?

days=0 
    airfaire=0 
    mealsPaid=0 
    carRental=0 
    privateMilesDriven=0 
    parkingFees=0 
    taxiCharges=0 
    conferenceFees=0 
    lodgingCharges=0 

    def getInputForVariables(): 
     days=input("Number of days on the trip: ") 
     airfaire=input("Amount of airfare, if none then enter 0: ") 
     mealsPaid=input("Amount paid for meals, if none then enter 0: ") 
     carRental=input("Amount of car rental fees, if none then enter 0: ") 
     privateMilesDriven=input("Number of miles driven, if a private vehicle was used: ") 
     parkingFees=input("Amount of parking fees, if none then enter 0: ") 
     taxiCharges=input("Amount of taxi charges, if none then enter 0: ") 
     conferenceFees=input("Conference or seminar registration fees, if none then enter 0: ") 
     lodgingCharges=input("Lodging charges, per night: ") 


    if __name__ == "__main__": 
     getInputForVariables() 
     print("the number of days is", days) 
     print("the amount of lodginnig charges is", (lodgingCharges)) 
+1

はい、正確には、関数内にローカル変数を作成しています。 Btw。各機能のすべての名前が漏れていれば、それはちょうど神聖な混乱ではないので、これを別々に扱う言語は多くありません。あなたの関数が何らかの効果を得たい場合は、値を返すか、変数をグローバル(宣言されていない)として宣言するか、辞書のような可変コンテナオブジェクトにパックする必要があります。これらはPythonで "参照によって"渡されるので、それらを変更することができ、エフェクトは参照を保持するすべての変数に表示されます。 –

+0

Pythonの命名規則に従ってください。 –

答えて

0

はいコードにスコープの問題があります。関数getInputForVariablesには、関数自体のスコープ内で定義された変数のみがあります。関数の呼び出しが終了すると、変数の値は破棄されます。何がやりたいことは、あなたが返された値からの入力データにアクセスし、data["insert variable name here"]の方法で入力を得ることができるこの方法を辞書に入力を保存し

def getInputForVariables(): 
    data={} 
    data["days"]=input("Number of days on the trip: ") 
    data["airfaire"]=input("Amount of airfare, if none then enter 0: ") 
    data["mealsPaid"]=input("Amount paid for meals, if none then enter 0: ") 
    data["carRental"]=input("Amount of car rental fees, if none then enter 0: ") 
    data["privateMilesDriven"]=input("Number of miles driven, if a private vehicle was used: ") 
    data["parkingFees"]=input("Amount of parking fees, if none then enter 0: ") 
    data["taxiCharges"]=input("Amount of taxi charges, if none then enter 0: ") 
    data["conferenceFees"]=input("Conference or seminar registration fees, if none then enter 0: ") 
    data["lodgingCharges"]=input("Lodging charges, per night: ") 
    return data 
if __name__ == "__main__": 
    data=getInputForVariables() 
    print("the number of days is", data["days"]) 
    print("the amount of lodginnig charges is", (data["lodgingCharges"] 

ことを返すことです。