我是新來的python,目前仍在學習hwo處理列表和字典。相同的列表/字典在多個功能
我有這兩個功能
def food_database(item_name, size_serv, calorie_serv, protein_serv, carb_serv, fat_serv):
# used to list the different foods when users ask for it
# food database
food_dict = [ {
'food_name': item_name,
'serving_size': size_serv,
'serving_calorie': calorie_serv,
'serving_protien': protein_serv,
'serving_fat': fat_serv,
'serving_carb': carb_serv
} ]
print food_dict
def food_in_diet(item_name, size_serv, calorie_serv, protein_serv, carb_serv, fat_serv, num_serv):
# used to show how much is in the diet plan for the user
User_diet_dict = [ {
'food_name': item_name,
'amount': num_serv*size_serv,
'serving_calorie': num_serv*calorie_serv,
'serving_protien': protein_serv,
'serving_fat': fat_serv,
'serving_carb': carb_serv
} ]
print User_diet_dict
我有這等功能
def add_food():
ask_to_add_another = raw_input("Would you like to add another food?(y/n)")
if ask_to_add_another == 'y':
# update
item_name = raw_input("What is the name of the food you would like to add? ")
size_serv = input("What is the size(grams) in each serving of %s? " % item_name)
calorie_serv = input("How many calories is in each serving of %s? " % item_name)
protein_serv = input("How many grams of protein is in each serving of %s? " % item_name)
carb_serv = input("How many grams of carbohydrates is in each serving of %s? " % item_name)
fat_serv = input("How many grams of fat is in each serving of %s? " % item_name)
num_serv = input("How many servings of %s would you like to add? " % item_name)
food_dict.append({
'food_name': 'item_name',
'serving_size': size_serv,
'serving_calorie': calorie_serv,
'serving_protien': protein_serv,
'serving_fat': fat_erv,
'serving_carb': carb_serv
})
# User_diet_dict.append = ({
# 'food_name': item_name,
# 'amount': num_serv*size_serv,
# 'serving_calorie': num_serv*calorie_serv,
# 'serving_protien': protein_serv,
# 'serving_fat': fat_serv,
# 'serving_carb': carb_serv
# })
# add to the dictonary/list
print food_dict
add_food()
if ask_to_add_another == 'n':
return False
的add_food()函數更新food_dict字典,並添加到列表中。
我得到的錯誤
Traceback (most recent call last):
File "MACROCALC.py", line 156, in <module>
main()
File "MACROCALC.py", line 35, in main
add_food()
File "MACROCALC.py", line 130, in add_food
food_dict.append({
NameError: global name 'food_dict' is not defined
我覺得好像是因爲字典是不是全球性的,這正在發生。
這裏是我的代碼,如果有人想了解 - >http://pastebin.com/mc8S6fkS
開放的建議! Noob程序員希望變得更好!
感謝您的幫助!
這是因爲'add_food'範圍內不存在'food_dict'。解決這個問題的一種方法是使其成爲全局的,但更好的方法是將這些'print'改成'return's,調用'food_database',並將其輸出存儲在一個變量中。 – Blender