/
mayaoaoa
/
HSE_python
Обзор
Документация
Войти
/
mayaoaoa
/
HSE_python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
matrix.py
90 строк
3 KB
mayaoaoa
renamed
07 дек 2025, 01:18
07 дек 2025, 01:18
ef67452
Код
Авторство
О чём код?
import random import time from datetime import datetime def log_execution_time(func): def wrapper(*args, **kwargs): filename = "matrix_multiply.txt" start_time = time.time() start_datetime = datetime.now() try: result = func(*args, **kwargs) end_time = time.time() end_datetime = datetime.now() execution_time = end_time - start_time print(f"Продолжительность умножения: {execution_time:.6f} секунд") with open(filename, 'a', encoding='utf-8') as f: f.write(f"\n=============================================\n") f.write(f"Время начала: {start_datetime.strftime('%Y-%m-%d %H:%M:%S')}\n") f.write(f"Время окончания: {end_datetime.strftime('%Y-%m-%d %H:%M:%S')}\n") f.write(f"Продолжительность: {execution_time:.6f} секунд\n") f.write(f"Размер матрицы: {args[0]}\n") f.write(f"Статус: УСПЕШНО\n") return result except ValueError as e: end_time = time.time() end_datetime = datetime.now() execution_time = end_time - start_time error_msg = str(e) print(f"Обнаружена ошибка: {error_msg}") with open(filename, 'a', encoding='utf-8') as f: f.write(f"\n=============================================\n") f.write(f"Время начала: {start_datetime.strftime('%Y-%m-%d %H:%M:%S')}\n") f.write(f"Время окончания: {end_datetime.strftime('%Y-%m-%d %H:%M:%S')}\n") f.write(f"Продолжительность: {execution_time:.6f} секунд\n") f.write(f"Размер матрицы: {args[0]}\n") f.write(f"Статус: ПРЕРВАНО - {error_msg}\n") raise return wrapper def generate_matrix(n, min_val=-50, max_val=50): return [[random.randint(min_val, max_val) for _ in range(n)] for _ in range(n)] @log_execution_time def multiply_matrix(n, m1, m2): res = [[0 for _ in range(n)] for _ in range(n)] # flag для отслеживания наличия 0 в результирующей матрице flag = False for i in range(n): for j in range(n): for k in range(n): res[i][j] += m1[i][k] * m2[k][j] if res[i][j] == 0: flag = True if flag: raise ValueError("В результирующей матрице обнаружен 0") return res def timer_matrix(n): matrix1 = generate_matrix(n) matrix2 = generate_matrix(n) print(f"Сгенерированы 2 матрицы размера {n} x {n}") result_matrix = multiply_matrix(n, matrix1, matrix2) return result_matrix if __name__ == "__main__": n = int(input("\nВведите размер матрицы n: ")) if n <= 0: print("Некорректный ввод") else: try: res = timer_matrix(n) print("Результат записан в файл\n") except ValueError as e: print(f"Ошибка: {e}")