/
joaquimtimoteo
/
MTUCI_Python_Lab2_Data_System
Обзор
Документация
Войти
/
joaquimtimoteo
/
MTUCI_Python_Lab2_Data_System
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lab2_data_system.py
222 строки
7 KB
joaquimtimoteo
update: lab2_data_system.py
01 мар 2026, 23:37
Верифицирован
01 мар 2026, 23:37
1ff00a4
Код
Авторство
О чём код?
import csv import json from datetime import datetime # ===================================== # Загрузка данных # ===================================== def load_csv(filename): try: with open(filename, newline='', encoding='utf-8') as file: reader = csv.DictReader(file) data = list(reader) print("CSV файл успешно загружен.") return data except FileNotFoundError: print("Ошибка: CSV файл не найден.") except Exception as e: print("Ошибка чтения CSV:", e) return [] def load_json(filename): try: with open(filename, encoding='utf-8') as file: data = json.load(file) print("JSON файл успешно загружен.") return data except FileNotFoundError: print("Ошибка: JSON файл не найден.") except json.JSONDecodeError: print("Ошибка: неверный формат JSON.") except Exception as e: print("Ошибка чтения JSON:", e) return [] # ===================================== # Анализ данных # ===================================== def check_expiry(data): print("\nПроверка срока годности:") today = datetime.today() expired = [] for item in data: try: expiry_date = datetime.strptime(item["срок годности"], "%Y-%m-%d") if expiry_date < today: expired.append(item) except Exception: print("Ошибка формата даты у:", item) if expired: print("Просроченные лекарства:") for med in expired: print(med["название"], "-", med["срок годности"]) else: print("Просроченных лекарств нет.") def refill_reminder(data): print("\nНапоминание о пополнении (количество < 5):") low_stock = [] for item in data: try: if int(item["количество"]) < 5: low_stock.append(item) except ValueError: print("Ошибка количества у:", item) if low_stock: for med in low_stock: print(med["название"], "- осталось:", med["количество"]) else: print("Все лекарства в достаточном количестве.") def search_by_purpose(data): purpose = input("Введите назначение для поиска: ").lower() found = [ item for item in data if item["назначение"].lower() == purpose ] if found: print("Найденные лекарства:") for med in found: print(med) else: print("Лекарства не найдены.") def show_statistics(data): try: total_items = len(data) total_quantity = sum(int(item["количество"]) for item in data) average_quantity = total_quantity / total_items if total_items > 0 else 0 print("\nСтатистика:") print("Общее количество наименований:", total_items) print("Общее количество упаковок:", total_quantity) print("Среднее количество:", round(average_quantity, 2)) # Группировка по назначению grouping = {} for item in data: purpose = item["назначение"] grouping[purpose] = grouping.get(purpose, 0) + 1 print("\nГруппировка по назначению:") for key, value in grouping.items(): print(key, ":", value) except Exception: print("Ошибка структуры данных.") # ===================================== # Экспорт данных # ===================================== def export_csv(data, filename="result.csv"): try: if not data: print("Нет данных для экспорта.") return keys = data[0].keys() with open(filename, 'w', newline='', encoding='utf-8') as file: writer = csv.DictWriter(file, fieldnames=keys) writer.writeheader() writer.writerows(data) print("Экспорт в CSV выполнен.") except Exception as e: print("Ошибка экспорта:", e) def export_json(data, filename="result.json"): try: with open(filename, 'w', encoding='utf-8') as file: json.dump(data, file, indent=4, ensure_ascii=False) print("Экспорт в JSON выполнен.") except Exception as e: print("Ошибка экспорта:", e) # ===================================== # Меню # ===================================== def menu(): data = [] while True: print("\n===== МЕНЮ =====") print("1 - Загрузить CSV") print("2 - Загрузить JSON") print("3 - Проверить срок годности") print("4 - Напоминание о пополнении") print("5 - Поиск по назначению") print("6 - Статистика") print("7 - Экспорт CSV") print("8 - Экспорт JSON") print("0 - Выход") choice = input("Выберите пункт меню: ") if choice == "1": filename = input("Введите имя CSV файла: ") data = load_csv(filename) elif choice == "2": filename = input("Введите имя JSON файла: ") data = load_json(filename) elif choice == "3": if data: check_expiry(data) else: print("Сначала загрузите данные.") elif choice == "4": if data: refill_reminder(data) else: print("Сначала загрузите данные.") elif choice == "5": if data: search_by_purpose(data) else: print("Сначала загрузите данные.") elif choice == "6": if data: show_statistics(data) else: print("Сначала загрузите данные.") elif choice == "7": export_csv(data) elif choice == "8": export_json(data) elif choice == "0": print("Выход из программы.") break else: print("Некорректный ввод.") if __name__ == "__main__": menu()