Здравствуйте коллеги! <br/> Моя просьба к вам такая: мне нужна помощь с пониманием кода, в частности с работой цикла. <br/> В моем скрипте, который представлен ниже, из двух файлов (JSON_FILE_PATH и CSV_FILE_PATH) я выбираю данные для пользователей и книг соответственно. Затем нужно распределить книги по порядку между пользователями таким образом, чтобы каждый пользователь получил равное количество книг, с учетом того, что некоторые книги могут остаться без пары. <br/> Я изучал множество уроков по циклам, но по-прежнему испытываю сложности с достижением желаемого результата. <br/> Буду благодарен за вашу помощь!
Для связи между двумя сущностями (пользователями и книгами) при помощи цикла, вам нужно выполнить следующие шаги: 1. Создайте основной цикл, который будет проходить по каждому пользователю. 2. Внутри основного цикла создайте вложенный цикл, который будет проходить по каждой книге. 3. Внутри вложенного цикла распределяйте книги пользователям по порядку, учитывая равное количество книг для каждого пользователя и возможность оставшихся книг без пары. Примерный код для такой задачи может выглядеть следующим образом: ```python import json import csv JSON_FILE_PATH = 'users.json' CSV_FILE_PATH = 'books.csv' # Загрузка данных из JSON файла with open(JSON_FILE_PATH) as json_file: users = json.load(json_file) # Загрузка данных из CSV файла with open(CSV_FILE_PATH, newline='') as csv_file: books = list(csv.reader(csv_file)) # Распределение книг по пользователям book_index = 0 for user in users: user['books'] = [] books_per_user = len(books) // len(users) for _ in range(books_per_user): user['books'].append(books[book_index]) book_index += 1 # Распределение оставшихся книг for i in range(book_index, len(books)): users[i % len(users)]['books'].append(books[i]) # Вывод распределенных книг для каждого пользователя for user in users: print(f"Пользователь {user['name']} получил книги: {user['books']}") ``` Это лишь пример кода и может потребоваться доработка в зависимости от ваших конкретных условий и данных. Надеюсь, этот пример поможет вам лучше понять, как установить связь между двумя сущностями при помощи цикла. Если у вас возникнут вопросы по коду или нужна дополнительная помощь, обращайтесь!
Проблема в том, что строка с выгрузкой результата в файл, находится внутри цикла, поэтому в файл будут попадать данные каждой итерации цикла. Предполагалось видимо выгрузить только в конце, поэтому отступ изменить надо
for book, user in zip(books, itertools.cycle(users)): user["books"].append( { "title": book["Title"], "author": book["Author"], "pages": book["Pages"], "genre": book["Genre"], } ) json.dump(users, result_json, indent=4)