Daniel Mendoza
Daniel Mendoza

Reputation: 11

Transfer variables from one function to the next in Python

I need help, these are the errors: what am I doing wrong?

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

My code:

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()

Upvotes: 1

Views: 66

Answers (2)

Ezio
Ezio

Reputation: 2985

You don't transfer variables from one function to another. If you want to use a variable in multiple function what you can do is define that variable globally and then use it in different functions

global_var = 10

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

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

UPDATE I was thinking about the comment below and I thought I should share this with you. Although in your case global variable seems like a good choice but keep in mind that using globals are not considered as good practice. So I would recommend that you use parameter passing instead. I would recommend you go through this http://www.learncpp.com/cpp-tutorial/4-2a-why-global-variables-are-evil/

Upvotes: 2

thangtn
thangtn

Reputation: 876

The problem is your variable "price" is local variable and exist only inside the function, therefore in function total_price, variable "price" does not exist. You could fix by making variable "price" a global variable by defining it outside of functions.

# Before functions 

price = 0 

# your functions go here
def ......

Upvotes: 2

Related Questions