Самостоятельная работа по информатике
Класс: 10 | Язык: Python | Темы: двумерные массивы (списки списков), циклы, условный оператор, системы счисления
На прошлом уроке вы создавали программу‑оракул с одномерным массивом предсказаний. Сегодня мы расширим функционал: предсказания будут храниться в двумерном массиве (матрице), а способ выбора предсказания можно будет изменять. Это позволит лучше освоить работу с индексами и вложенными списками.
ABC, интерпретируется как число: A·36² + B·36¹ + C·36⁰.
📌 Двумерный массив предсказаний
Вместо одного списка предсказаний создайте матрицу (список списков) размером 3×4 (3 строки, 4 столбца) или любого другого размера (не менее 3×3). Например:
Каждый элемент доступен по двум индексам: predictions[строка][столбец].
🔹 Обязательная часть (задание 1)
Напишите программу, которая:
- Создаёт двумерный список предсказаний (минимум 3 строки, 3 столбца).
- Запрашивает у пользователя слово на английском языке (только буквы A–Z, a–z). Проверяет корректность ввода: если в слове есть недопустимые символы (цифры, знаки, русские буквы), программа выводит сообщение об ошибке и повторяет запрос, пока не будет введено корректное слово.
- Преобразует слово в число, считая его записанным в 36‑ричной системе счисления (буквы A–Z имеют значения 10–35). Приводит все буквы к верхнему регистру.
- Переводит полученное 36‑ричное число в десятичную систему (можно использовать встроенную функцию
int(word, 36)или написать свой алгоритм). - Вычисляет два индекса для выбора предсказания из двумерного массива:
— общее количество предсказаний =rows * cols(например, 3×4 = 12).
— вычисляетсяtotal_index = десятичное_число % (rows * cols).
— строка =total_index // cols, столбец =total_index % cols. - Выводит предсказание, используя полученные индексы:
predictions[строка][столбец].
📎 Подсказки: для проверки строки используйте .isalpha(). Для перевода в верхний регистр — .upper(). Встроенная функция int(word, 36) работает только с буквами A–Z.
⭐ Дополнительные задания (повышают оценку)
Модифицируйте программу так, чтобы пользователь мог выбрать один из двух режимов:
- Режим 1 (классический): индекс вычисляется, как описано в задании 1 (
total_index = число % (rows*cols)). - Режим 2 (сумма цифр): сначала находится десятичное число, затем вычисляется сумма его цифр (например, для числа 123 → 1+2+3=6). После этого
total_index = сумма_цифр % (rows*cols), а строка и столбец определяются так же, как в режиме 1.
Добавьте в программу цикл, который позволяет пользователю получать предсказания несколько раз. После вывода предсказания программа должна спрашивать:
"Хотите ещё одно предсказание? (да/нет): ". Если пользователь отвечает «да» (или «yes», «д», «y»), то программа запрашивает следующее имя (и, если реализовано, снова предлагает выбрать режим). Если отвечает «нет» — завершает работу. В конце программа выводит сообщение: "Спасибо! Было сделано предсказаний: X", где X — количество обработанных имён.
Вместо жёстко заданного двумерного массива загружайте предсказания из текстового файла
predictions_2d.txt. Формат файла: первая строка — количество строк, вторая — количество столбцов, затем идут сами предсказания построчно (по одному предсказанию на строку). Например:
4
Вы встретите старого друга
Неожиданный подарок
Удача в делах
Романтический вечер
Будьте внимательны к деталям
Деньги придут неожиданно
Путешествие скоро
Новая возможность
Здоровье порадует
Исполнится мечта
Осторожнее в общении
Вдохновение нахлынет
📋 Пример работы программы (обязательная часть)
>> Ваше предсказание: Деньги придут неожиданно
>> Введите слово на английском: 123abc
>> Ошибка: слово должно содержать только латинские буквы. Попробуйте снова.
>> Введите слово на английском: Python
>> Ваше предсказание: Здоровье порадует
🧾 Критерии оценки
- «3» — выполнена обязательная часть (задание 1). Программа корректно обрабатывает ввод, переводит слово в число, корректно вычисляет индексы для двумерного массива и выводит предсказание.
- «4» — выполнены задания 1 и 2 (выбор режима вычисления индекса). Программа работает без ошибок, код структурирован.
- «5» — выполнены задания 1, 2 и 3 (многократные предсказания). Программа позволяет получать предсказания несколько раз, корректно ведёт подсчёт.
- Дополнительный плюс — реализация задания 4 (работа с файлом) при условии выполнения всего остального.
📎 Полезные ссылки (напоминание)
- Проверка строки на буквы:
слово.isalpha()— возвращаетTrue, если все символы буквы. - Перевод из 36-ричной системы:
int(слово_в_верхнем_регистре, 36). - Количество строк и столбцов в двумерном списке:
rows = len(predictions),cols = len(predictions[0]). - Бесконечный цикл с условием выхода:
while True: ... if ответ == "нет": break. - Сумма цифр числа: можно преобразовать число в строку и пройти по символам:
sum(int(d) for d in str(число)). - Работа с файлами:
open(),readlines(),write().


