/
AlexandrNefedov
/
Homework_Files
Обзор
Документация
Войти
/
AlexandrNefedov
/
Homework_Files
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
book_recipes.py
152 строки
5 KB
Alexandr Nefedov
Initial commit
24 май 2026, 18:33
24 май 2026, 18:33
ff40743
Код
Авторство
О чём код?
cook_book = {} names = [] count = [] #Открываем файл, забираем в список with open('recipes.txt', 'r', encoding='utf-8') as f: lines = f.readlines() #Создаем 2 списка, один с ключами будущего словаря, один с количеством продуктов для одного рецепта for i, line in enumerate(lines): #print(f"Строка {i+1}: {line.strip()}") line1 = line.strip() if line1.isdigit() == False and "|" not in line1 and line1 != "": names.append(line1) if line1.isdigit() == True: count.append(line1) print(names) print(count) x = [] data = {} data_all =[] #Собираем список всех ингредиентов for i, line in enumerate(lines): line1 = line.strip() if "|" in line1: x = line1.split("|") for j, y in enumerate(x): if j==0: data['ingredient_name'] = y if j==1: data['quantity'] = y if j==2: data['measure'] = y data_all.append(data) data = {} print(data_all) j = 0 z = 0 #Собираем словарь к Задаче1 for i, item in enumerate(names): z = z + int(count[i]) cook_book[item] = [] while j < z: #cook_book.update() if item in cook_book: cook_book[item].append(data_all[j]) #print(data_all[j]) else: cook_book[item] = data_all[j] #print(data_all[j]) #cook_book.setdefault(item, data_all[j]) #cook_book[item].append(data_all[j]) j = j + 1 #i = i + 1 print(cook_book) def get_shop_list_by_dishes(dishes, person_count): print("") new_list2 = [] new_dict2 = {} for item1 in dishes: if item1 in names: for x1 in cook_book[item1]: #print(x1) new_list2.append(x1) #print(new_list2) #Создаем 3 списка одинаковой длины: названия, тип количества, количество new_list3ov = [] new_list3n = [] new_list3q = [] for item3 in new_list2: new_list3ov.append(item3['ingredient_name']) new_list3n.append(item3['measure']) new_list3q.append(item3['quantity']) print(new_list3ov) print(new_list3q) #Создаем список списков индексов, которые повторяются new_dict0 = {} new_set = set(new_list3ov) for z in new_set: new_dict0[z] = new_list3ov.count(z) print(new_dict0) list4 = [] for key, value in new_dict0.items(): if value>1: indices = [] for index, value2 in enumerate(new_list3ov): if value2 == key: indices.append(index) list4.append(indices) #print(f'{key}: {value}') print(list4) new_list3ov_fin = [] new_list3n_fin = [] new_list3q_fin = [] #Складываем количество повторяющихся ингридиентов for item5 in list4: a = 0 for item6 in item5: a = a + int(new_list3q[item6]) new_list3q[item5[0]] = str(a) #for key1, item9 in enumerate(new_list3ov): #if key1 not in list4: #new_list3ov_fin.append(item9) list_end = [] #Создаем список индексов, по которым надо удалить повторяющиеся значения в списках for item9 in list4: for key5, item10 in enumerate(item9): if key5 != 0: list_end.append(item10) print("list_end") print(list_end) #Собираем итоговые 3 списка с удаленными элементами, которые повторяются for key1, item11 in enumerate(new_list3ov): if key1 not in list_end: new_list3ov_fin.append(item11) for key1, item11 in enumerate(new_list3n): if key1 not in list_end: new_list3n_fin.append(item11) for key1, item11 in enumerate(new_list3q): if key1 not in list_end: new_list3q_fin.append(item11) print("new_list3ov_fin") print(new_list3ov_fin) print("new_list3n_fin") print(new_list3n_fin) print("new_list3q_fin") print(new_list3q_fin) #for item8 in list4: #for key1, item7 in enumerate(item8): #if key1 > 0 and item7 <= len(new_list3q): #new_list3q.pop(item7) #new_list3n.pop(item7) #new_list3ov.pop(item7) print("Hello") print(new_list3ov) print(new_list3n) print(new_list3q) #Итоговый словарь for key0, item2 in enumerate(new_list3ov_fin): f1 = person_count*int(new_list3q_fin[key0]) new_dict2[item2] = {'measure' : new_list3n_fin[key0], 'quantity' : f1} print("") #print(new_dict2) return new_dict2 print(get_shop_list_by_dishes(['Фахитос', 'Омлет'], 3))