Вопрос по python. Почему так происходит?
Есть два кода. С первого взгляда они ничем не отличаются:
(1) def print_shopping_list(recipe1, recipe2):
recipe11 = set(recipe1)
recipe22 = set(recipe2)
recipe = recipe11.union(recipe22)
for i in recipe:
weight = 0
if i in recipe1.keys():
weight += recipe1[i]
if i in recipe2.keys():
weight += recipe2[i]
print(i + ":" + str(weight))
pizza = {'мука, кг': 1,
'помидоры, кг': 1.5,
'шампиньоны, кг': 1.5,
'сыр, кг': 0.8,
'оливковое масло, л': 0.1,
'дрожжи, г': 50}
salad = {'огурцы, кг': 1,
'перцы, кг': 1,
'помидоры, кг': 1.5,
'оливковое масло, л': 0.1,
'листья салата, кг': 0.4}
print_shopping_list(pizza, salad)
(2) def print_shopping_list(recipe1, recipe2):
weight = 0
recipe11 = set(recipe1)
recipe22 = set(recipe2)
recipe = recipe11.union(recipe22)
for i in recipe:
if i in recipe1.keys():
weight += recipe1[i]
if i in recipe2.keys():
weight += recipe2[i]
print(i + ":" + str(weight))
pizza = {'мука, кг': 1,
'помидоры, кг': 1.5,
'шампиньоны, кг': 1.5,
'сыр, кг': 0.8,
'оливковое масло, л': 0.1,
'дрожжи, г': 50}
salad = {'огурцы, кг': 1,
'перцы, кг': 1,
'помидоры, кг': 1.5,
'оливковое масло, л': 0.1,
'листья салата, кг': 0.4}
print_shopping_list(pizza, salad)
При этом, первый работает как часы, а второй выдает странных значения. Почему так происходит? Какая разница, где объявлять переменную weight(перед циклом и в нём)?
Почему-то отступы не указываются на этом проекте. Но они есть..