在Python中将变量从一个函数传递到下一个函数

时间:2017-02-06 03:30:18

标签: 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()

2 个答案:

答案 0 :(得分:2)

问题是你的变量&#34;价格&#34;是局部变量,只存在于函数内部,因此在函数total_price,variable&#34; price&#34;不存在。您可以通过变量&#34; price&#34;来解决问题。通过在函数之外定义它来实现全局变量。

# Before functions 

price = 0 

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

答案 1 :(得分:2)

您没有变量从一个函数转移到另一个函数。如果你想在多个函数中使用一个变量,你可以做的是全局定义该变量,然后在不同的函数中使用它

global_var = 10

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

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

更新我在考虑下面的评论,我想我应该和你分享。虽然在你的情况下全局变量似乎是一个不错的选择,但请记住,使用全局变量被认为是一种好的做法。所以我建议您使用参数传递。我建议你仔细阅读http://www.learncpp.com/cpp-tutorial/4-2a-why-global-variables-are-evil/