/
Demek
/
DSam621
Обзор
Документация
Войти
/
Demek
/
DSam621
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Python/hw10.py
107 строк
6 KB
d_e_m_e_k
ДЗ10
30 июн 2026, 20:43
30 июн 2026, 20:43
edcc62a
Код
Авторство
О чём код?
# ============================================ # Импортируем библиотеку PrettyTable для # создания красивых таблиц в консоли # ============================================ from prettytable import PrettyTable # ============================================ # Задаём размеры таблицы: 9 строк × 9 столбцов # (это классическая таблица умножения) # ============================================ rows, cols = 9, 9 # ============================================ # === 1. Создание таблицы умножения через for === # Создаём двумерный массив (матрицу) размером 9×9, # где каждый элемент = i * j # ============================================ matrix = [] # Создаём пустой список для хранения строк for i in range(1, rows + 1): # i — первый множитель (от 1 до 9) row = [] # Создаём новую строку for j in range(1, cols + 1): # j — второй множитель (от 1 до 9) row.append(i * j) # Добавляем результат умножения matrix.append(row) # Добавляем строку в матрицу # ============================================ # === 2. Функция: вернуть строку в формате "a × b = c" === # Вход: два числа (a, b) # Выход: строка вида "a×b=c" # ============================================ def format_product(a, b): """Возвращает строку формата 'a×b=c', где c = a*b""" # Пример: format_product(3, 4) → "3×4=12" return f"{a}×{b}={a*b}" # ============================================ # === 3. Обработка через for + функция (вывод в консоль) === # Для каждой строки матрицы: # — применяем функцию format_product ко всем элементам # — печатаем получившийся список строк # ============================================ print("Форматирование строк (через for):") # enumerate(matrix) → даёт пары (индекс, строка) # например: (0, [1, 2, 3, ...]) for i, row in enumerate(matrix): # Генератор списка: # для каждого j в строке применяем format_product(i+1, j+1) # (i+1 и j+1 — потому что enumerate начинает с 0, а умножение с 1) formatted = [format_product(i+1, j+1) for j, _ in enumerate(row)] print(formatted) # ============================================ # === 4. Обработка через while + функция (вывод в консоль) === # То же самое, что и выше, но с циклом while # ============================================ print("\nФорматирование строк (через while):") i = 0 # Счётчик строк while i < len(matrix): formatted = [] # Список для форматированных строк текущей строки j = 0 # Счётчик столбцов # Внутренний цикл while — проход по элементам строки while j < len(matrix[i]): # Добавляем результат format_product(i+1, j+1) formatted.append(format_product(i+1, j+1)) j += 1 # Увеличиваем счётчик колонок # Выводим список строк для текущей строки матрицы print(formatted) i += 1 # Увеличиваем счётчик строк # ============================================ # === 5. Транспонированная таблица (только её и оставляем) === # Выводим таблицу в красивом виде через PrettyTable: # — строки — это второй множитель (×1, ×2, ..., ×9) # — колонки — это первый множитель (1, 2, ..., 9) # — ячейки — результаты вида "i×j=result" # ============================================ print("\n✨ Транспонированная таблица умножения (9×9):") # Создаём новый объект таблицы table_t = PrettyTable() # Настройка оформления: table_t.hrules = 1 # Горизонтальные линии (между строками) table_t.vrules = 1 # Вертикальные линии (между колонками) table_t.align = "r" # Выравнивание по правому краю (цифры будут ровно) # Добавляем заголовки: # первая колонка — пустая (для маркера строки), # остальные — номера строк (1, 2, 3, ..., 9) headers_t = [""] + [str(i + 1) for i in range(rows)] table_t.field_names = headers_t # Добавляем данные: # внешний цикл — по колонкам исходной таблицы (вторые множители: ×1, ×2, ..., ×9) for j in range(cols): # j = 0..8, соответствует второму множителю (j+1) # формируем строку для таблицы: # first cell: метка строки (например, "×1") # остальные: "i×(j+1)=result" для i=1..9 row_data = [f"×{j+1}"] + [f"{i+1}×{j+1}={matrix[i][j]}" for i in range(rows)] table_t.add_row(row_data) # Выводим готовую таблицу print(table_t)