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

问题是你的变量"price"是局部变量,只存在于函数内部,因此在函数total_price中,变量"price"不存在。您可以通过在函数外部定义变量"price"来修复它,使其成为全局变量。

# Before functions 
price = 0 
# your functions go here
def ......

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

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/

最新更新