我怎样才能使用我的函数a_c_t_b()

时间:2015-12-03 13:05:41

标签: python function

我的代码如下:

def g_b():
    items_in_bag = []
    done=False
    bugout_bag = 'Bug Out Bag'
    while done == False:
        item = input('What bags do you have? [Enter x to stop]')
        items_in_bag.append(item)
        if item == 'x':
            done = True
            items_in_bag.remove('x')
            break
        else:
            continue

    items_in_bag.append(bugout_bag)
    print("Your bags\n")
    print(items_in_bag)
    return items_in_bag

def g_c():
    coins_in_bag = []
    done=False
    while done == False:
        coin_item = input('What coins do you have? [Enter x to stop]')
        if coin_item == 'x':
            done = True
            break
        else:
            coins_in_bag.append(coin_item)
            continue
    print("Your coins\n")
    print(coins_in_bag)
    return coins_in_bag


def a_c_t_b(items_in_bag, coins_in_bag):
    #print('Here are your coins:\n')
    #g_c()
    #print('Here are your bags:\n')
    #print(items_in_bag)
    print (items_in_bag,coins_in_bag)
    return (items_in_bag,coins_in_bag)

def main():
    g_b()
    g_c()
    a_c_t_b(items_in_bag,coins_in_bag)

main()

但是,当我运行此代码时:import myfile

它给我一个错误:

  File ".\myfile.py", line 51, i
    a_c_t_b(items_in_bag,coins_in_bag)
NameError: global name 'items_in_bag' is not defined

我只是想从各自的items_in_bag,coins_in_bag返回functions的值。

谢谢

3 个答案:

答案 0 :(得分:1)

您正在调用g_bg_c,但从未捕获其返回的值。

您可以这样做:

def main():
    items_in_bag = g_b()
    coins_in_bag = g_c()
    a_c_t_b(items_in_bag, coins_in_bag)

或:

def main():
        a_c_t_b(g_b(), g_c())

答案 1 :(得分:1)

请将您的职能称为更明智的名字。

要回答您的问题,您的g_bg_c函数会返回值,但它们不会返回名称。在您调用a_c_t_b时,Python不知道items_in_bag是什么,因为您从未定义它。 Python无法知道你的意思"从g_b"返回的值:你必须告诉它。

items_in_bag = g_b()
coins_in_bag = g_c()
a_c_t_b(items_in_bag, coins_in_bag)

答案 2 :(得分:0)

导入模块时main执行函数(在最后一行调用)。 main函数使用未定义的标识符items_in_bagcoins_in_bag

def main():
    g_b()
    g_c()
    a_c_t_b(items_in_bag,coins_in_bag)

可能你想要像

这样的东西
def main():
    items_in_bag = g_b()
    coins_in_bag = g_c()
    a_c_t_b(items_in_bag,coins_in_bag)