2017-02-06 10 views
1

私は助けが必要です。これらはエラーです:私は何を間違っていますか?Pythonのある関数から次の関数への変数の転送

Traceback (most recent call last): 
    File "python", line 64, in <module> 
    File "python", line 6, in walmart 
    File "python", line 28, in shopping 
    File "python", line 53, in drink 
    File "python", line 61, in total_price 
NameError: global name 'price' is not defined 

マイコード:

def walmart(): 
    print "Hello welcome to the store!" 
    answer = raw_input("What's your name?") 
    if len(answer) > 0: 
     print "okay great %s, Lets go!...." % (answer) 
     shopping() 
    else: 
     print "Sorry try typing something" 
     walmart() 
def shopping(): 
    print "Ok lets get shopping" 
    shop_list = {"pizza" : 10.00 , "fries" : 15.00 , "burger" : 15.00} 
    print "Here are a list of food avaliable..." 
    print shop_list 
    ans1 = raw_input("Please select your item...").lower() 
    price = shop_list[ans1] 

    if "pizza" in ans1: 
     print "Your current price is... " + str(shop_list[ans1]) 
     drink(price) 

    elif "burger" in ans1: 
     print "Your current price is... " + str(shop_list[ans1]) 
     drink(price) 

    elif "fries" in ans1: 
     print "Your current price is... " + str(shop_list[ans1]) 
     drink(price) 

    else: 
     print "Please type something on the list..." 
     shopping() 
    return price 

def drink(price): 
    print "Okay let's pick you a drink" 
    drink_list = {"water" : 1 , "soda" : 2 , "tea" : 3} 
    print "Here is a list of drinks..." 
    print drink_list 
    ans2 = raw_input("Please type your choice here...").lower() 
    price_drink = drink_list[ans2] 

    if "water" in ans2: 
     print "Great healthy choice!" 
     total_price(price_drink) 

    elif "soda" in ans2: 
     print "Not that heaalthy but whatever floats your boat!" 
     total_price(price_drink) 

    elif "tea" in ans2: 
     print "OOOOO Tea great choice " 
     total_price(price_drink) 

    else: 
     print " Try again!" 
     drink(price) 
    return price_drink 

def total_price(price_drink): 
    totalprice = drink(price) + shopping() 
    print "Thanks for shopping....\nHere is your total price..." 
    print totalprice 
walmart() 
+0

エラーが言うように、 'price'は' total_price'で定義されていません。あなたの質問は何ですか? – Carcigenicate

答えて

2

問題はあなたの変数「価格」はローカル変数であるため、機能TOTAL_PRICEに、関数内にのみ存在し、変数「価格」は存在しません。あなたは変数 "価格"を関数の外で定義することによってグローバル変数にすることで修正することができます。

# Before functions 

price = 0 

# your functions go here 
def ...... 
+0

ありがとう、それを試してみよう! –

2

あなたは別変数一つの機能からではない転送を行います。あなたは何ができるか、複数の関数内で変数を使用したい場合は、グローバル、その変数を定義し、その後、私は以下のコメントを考えていたと私は私がこれを共有しなければならないと思ったさまざまな機能に

global_var = 10 

def func1(): 
    global global_var 
    #rest of the function 

def func1(): 
    global global_var 
    #rest of the function 

UPDATEを、それを使用していますあなたと。あなたのケースではグローバル変数は良い選択のように思えますが、グローバルを使うことはではなく、は良い方法と考えられます。ですから、代わりにパラメータ渡しを使用することをお勧めします。私はあなたがこれを通過することをお勧めしますhttp://www.learncpp.com/cpp-tutorial/4-2a-why-global-variables-are-evil/

+0

グローバルをお勧めしません。 –

関連する問題