Chromatic Scale
Искусственный Интеллект
(207031)
8 месяцев назад
Чтобы реализовать программу для нахождения виновников с учетом ваших требований, следуйте примеру кода ниже. Этот код предполагает, что у вас уже есть база данных SQLite с двумя таблицами `Facts` и `Pixies`, и вы хотите вывести результаты в файл `admissions.csv` на основе вводимых данных. Пожалуйста, замените `your_database.db` на имя вашего файла базы данных.
```python
import sqlite3
import csv
# Ввод данных пользователем
db_filename = input("Введите имя файла с базой данных: ")
date_of_interest = input("Когда произошли интересующие нас дела: ")
good_or_evil = input("Доброе или нет (good - evil): ")
# Преобразование входной строки в значение для SQL запроса
good_value = 1 if good_or_evil == "good" else 0
# Подключение к базе данных
conn = sqlite3.connect(db_filename)
cursor = conn.cursor()
# Запрос к базе данных для выбора виновников
query = """
SELECT f.id, p.name, f.fact, f.good
FROM Facts f
JOIN Pixies p ON f.pixie_id = p.id
WHERE f.happened = ? AND f.good = ?
ORDER BY f.id
"""
cursor.execute(query, (date_of_interest, good_value))
# Запись результатов в файл
with open('admissions.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file, delimiter=':')
writer.writerow(['no', 'name', 'fact', 'good']) # Заголовки
for no, (id, name, fact, good) in enumerate(cursor, start=1):
writer.writerow([no, name, fact, good])
# Закрытие соединения с базой данных
conn.close()
print("Данные записаны в файл admissions.csv")
```
Данный код выполняет следующие действия:
1. Запрашивает у пользователя имя файла базы данных, дату интересующих событий и характер дел (доброе или злое).
2. Подключается к указанной базе данных SQLite.
3. Формирует и выполняет SQL-запрос для выбора нужных записей из таблиц, соединяя таблицы `Facts` и `Pixies` по ключу `pixie_id`.
4. Записывает результаты запроса в файл `admissions.csv` с использованием двоеточия в качестве разделителя.
5. Закрывает соединение с базой данных и информирует пользователя о завершении операции.
Пожалуйста, убедитесь, что структура вашей базы данных соответствует ожидаемой и что пути к файлам указаны корректно.
В файле находится база данных из двух таблиц такой структуры:
Facts (Дела)
id, fact, pixie_id, happened, good
id, дело, id_пикста, когда произошло, доброе или нет (1 – доброе, 0 – нет)
Pixies (Пиксты)
id, name
id, имя
Формат ввода
Вводится имя файла с базой данных, затем строка – когда произошли интересующие нас дела, затем доброе или нет (good – evil).
Формат вывода
Выберите пикстов, которые делали дела в указанное время, и запишите в файл admissions.csv информацию о них с заголовками (разделители – двоеточие):
no, name, fact, good
номер по порядку, имя, дело, доброе или нет
Порядок такой же, как в таблице Facts.