我的代码如下:
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
的值。
谢谢
答案 0 :(得分:1)
您正在调用g_b
和g_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_b
和g_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_bag
和coins_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)