📌 Все задачи разбиты на блоки для удобства навигации и чтения.
Первый блок задач (задачи 01 - 10):
01. Интерполяция переменных: вывести "Hello, World!", после чего запросить имя пользователя и вывести в терминале "Hello, <username>!".
02. Функция, которая проверяет, является ли указанный год високосным.
03. Вывести в терминале текущую дату и время в удобном для чтения формате (например, "Текущая дата и время: 10.10.2023 13:56:23, день недели: вторник.").
04. Функция, которая проверяет, является ли число, переданное в качестве аргумента, простым.
05. Функция, которая генерирует одномерный массив случайных целых чисел размером count. Все числа должны находиться в диапазоне min_value ... max_value. Дополнительно следует реализовать возможность генерации массива, состоящего только из уникальных (неповторяющихся) элементов.
06. Дан одномерный массив чисел размером k (1 <= k <= 1000). Вывести на экран минимальный, максимальный элементы массива, а также сумму и среднее арифметическое всех элементов массива.
07. Фильтрация исходного массива: Дан массив из 100 случайных целых чисел. Создать два новых массива на основе первого = в первом оставить только чётные положительные числа, во втором - двузначные числа, кратные 10. Вывести оригинальный массив и оба получившихся массива на экран консоли.
08. Перевернуть все символы в строке, не используя встроенные в язык методы, типа string.reverse и слайсы.
09. Поменять значения двух целочисленных переменных, не используя при этом третью (три способа).
10. Использование ассоциативных массивов: Зарплата сотрудника вычисляется по формуле = 1000$ + 20$ за каждый отработанный час + 30$ за каждого нового клиента. Подсчитать зарплату каждого из сотрудников. Вывести их в порядке от "лучшего" к "худшему". Каждый сотрудник представляет собой ассоциативный массив.
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
Второй блок задач (задачи 11 - 20):
11. Задача номер 9, но для строковых переменных (поменять их значения, не используя при этом третью).
12. Нарисовать в терминале фигуру "ёлочка" из символов * (снежинка) и пробелов (располагаются между снежинками). Ёлочка должна быть симметричной, на первой строке = одна снежинка, на второй = две и т. д. Высота ёлочки задаётся пользователем, но она не должна превышать 40 строк (необходимо проверить этот параметр программно). Желательно продумать и реализовать рекурсивный алгоритм отрисовки.
13. Вывести на экран длину вектора по трём заданным координатам = x, y, z.
14. Дан список продуктов на складе. У каждого есть срок его изготовления и срок годности (всегда указан в днях). Необходимо проверить, какие продукты на текущую дату можно считать просроченными, а какие - всё ещё свежими. Даты можно указать любые, главное, чтобы было видно, что функция работает правильно.
15. Реализовать программу "Калькулятор для вклада". Пользователь вводит начальную сумму и количество месяцев, после чего должен получить финальную сумму, которая будет на вкладе по истечению указанного им срока. Условия вклада такие: любая сумма до 6 месяцев (включительно) = 6.5% годовых; если вклад делается на срок больше 6 месяцев, то для сумм больше 500.000 процентная ставка = 8%, для сумм меньших или равных 500.000 = 10%. Все вклады идут с ежемесячной капитализацией процентов (проценты каждый месяц прибавляются к сумме вклада, и в новом месяце процент считается уже от новой суммы).
Так как это учебная программа, результат при выводе разрешается округлить до 2-3 знаков после запятой.
16. Необходимо рекурсивно обойти все элементы двумерного кортежа и вывести их на экран в виде матрицы (через пробел или через запятую).
Например: двумерный кортеж = ((1, -4, 5), (12, 0, -9), (3, 10, 83)). На экране должно получиться:
1, -4, 5
12, 0, -9
3, 10, 83
В кортеже могут быть только целые числа (положительные и отрицательные). Порядок рекурсивного обхода - на усмотрение разработчика.
17. Даны две строки, необходимо выяснить являются ли они анаграммами? В содержании строк следует учитывать только буквы и цифры. Пробелы и знаки препинания необходимо удалить или игнорировать их при сравнении. Сравнение сделать case-insensitive (регистронезависимым).
18. Количество вхождений элемента в последовательность: В текстовом файле записана произвольная строка или текст. Пользователь вводит символ или подстроку. Необходимо вывести, какое количество раз она повторяется в исходном тексте. Поиск сделать case-insensitive (регистронезависимым).
19. Пользователь вводит две даты в заданном формате. Необходимо вывести разницу между датами в днях.
20. Реализовать функции dec_to_hex, hex_to_dec, dec_to_bin, bin_to_dec, rgb_to_hex, hex_to_rgb без использования аналогичных функций, встроенных в язык программирования. Входные данные = целые неотрицательные числа в указанной системе счисления в виде строки: "40AC20", "600", "1011011" и т. д. RGB-цвет должен быть представлен в виде кортежа из трёх целочисленных значений (0 .. 255).
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
Третий блок задач (задачи 21 - 30):
21. Реализовать функцию, которая выводит на экран все делители указанного натурального числа.
22. Функция, которая раскладывает натуральное число (n > 1) на простые сомножители.
23. Решето Эратосфена: Вывести список всех простых чисел в диапазоне от 2 до <user_number>.
24. Реализовать две функции для целочисленной арифметики денежных единиц: одна - для сложения, вторая - для вычитания. Мы знаем, что представление дробной части вещественного числа в компьютере не всегда точное из-за особенностей двоичной арифметики. Поэтому для денежных единиц обычно создаётся отдельный объект, в котором реализованы свои методы для арифметических операций с этим объектом. Копейки считаются отдельно, а рубли - отдельно. Так как мы пока не затрагиваем ООП, предлагается реализовать описанный функционал через ассоциативные массивы (словари).
25. Найти и распечатать самое длинное и самое короткое слово в текстовом файле. Знаки препинания и пробелы при подсчёте не учитывать!
26. Матричная арифметика = целых четыре подзадачи в одной. В дальнейшем считать матрицу и двумерный список (кортеж) синонимами. Все индексы будем считать с нуля.
Итак, дана квадратная матрица 5-го порядка. Можно наполнить её любыми целыми числами.
A. Вывести на экран исходную и транспонированную ей матрицу. Вывод обязательно реализовать с выравниванием по столбцам.
B. Вывести сумму элементов с чётными индексами на главной диагонали. Например: A[0][0], A[2][2] и т. д. Исходная матрица может быть любого размера (но она обязательно будет квадратной).
C. Вывести последнюю цифру суммы всех элементов на главной и побочной диагоналях.
D. Найти и вывести минимальный элемент матрицы и координаты (индексы) его последнего вхождения.
27. Реализовать две функции: Первая вычисляет, является ли указанная строка палиндромом. Вторая делает тоже самое, но для целых неотрицательных чисел. Можно использовать любой известный алгоритм для вычисления палиндромов.
28. Дан массив из натуральных чисел. Найти НОД для всех чисел в указанном массиве.
29. Дан массив случайных чисел. Сложить отдельно положительные, отдельно - отрицательные числа. Обе суммы вывести на экран. Ноль не относится ни к первым, ни ко вторым.
30. Дан массив случайных чисел. Вывести на экран только уникальные (неповторяющиеся) элементы.
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
Четвёртый блок задач (задачи 31 - 36):
31. Заменить в текстовом файле все вхождения одной подстроки на другую (Replace In File).
32. Вывести на экран сумму всех цифр указанного числа (функция должна работать в том числе и для отрицательных чисел, и для вещественных).
33. Реализовать функцию, которая удаляет в текстовом файле случайные лишние пробелы в конце строки. Другими словами, каждая строка в файле должна быть либо пустой, либо обязательно заканчиваться каким-то визуально видимым символом (не пробелом!).
34. Программа, появившаяся случайно в ходе решения задач. Внести в программу две функции по поиску простых чисел - одна реализует наивный улучшенный алгоритм из задачи 04, вторая - Решето Эратосфена из задачи 23. Сравнить время их работы для какого-то достаточно большого n. Результаты вывести на экран.
35. Дан текстовый файл. Необходимо подсчитать среднюю длину слова. Текст предварительно очистить от пробелов и лишних знаков препинания при помощи регулярного выражения.
36. Найти и вывести на экран НОД и НОК для двух указанных натуральных чисел. Разрешается использовать любой известный алгоритм, кроме встроенных в язык программирования функций.
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •