Ниже я дам подробное объяснение и готовые решения на Python для всех четырех заданий. Так как цель — "Понять", будут пояснения к каждому шагу, а затем код.
- Таблица умножения от 1 до 9
Как работать:
- Мы строим строки для каждого первого множителя i от 1 до 9.
- В каждой строке считаем i умножить на j для j от 1 до 9.
- Чтобы столбцы были ровными, форматируем числа с фиксированной шириной (2 символа) и соединяем пробелами.
Код:
def multiplication_table_1_to_9():
for i in range(1, 10):
row = [f"{i * j:2d}" for j in range(1, 10)]
print(" ".join(row))
вызов
multiplication_table_1_to_9()
- Прямоугольник из символов * размером 5 на 7
Как работать:
- Пусть 5 — количество строк (высота), 7 — количество столбцов (ширина).
- Просто печатаем строку из 7 звездочек 5 раз.
Код:
def rectangle_star_pattern(rows=5, cols=7):
for _ in range(rows):
print("*" * cols)
вызов
rectangle_star_pattern(5, 7)
- Найдите все делители введенного пользователем числа
Как работать:
- Сначала читаем число n.
- Если n == 0 предусмотрено как особый случай (делители числа 0 неопределены). В реальных задачах чаще дают ненулевое.
- Чтобы найти делители эффективно, перебираем i от 1 до sqrt(n).
Если i делит n, то и n//i — также делитель. Храним маленькие делители и большие отдельно, затем объединим.
- В конце отсортируем и выведем все делители.
Код:
def divisors_of_number():
try:
n = int(input("Введите число: ").strip())
except ValueError:
print("Ошибка: введено не число.")
return
if n == 0:
print("Делители числа 0 не определены (бесконечное множество).")
return
small = []
large = []
i = 1
while i * i <= abs(n): # учтем и отрицательные делители, если нужен
if n % i == 0:
small.append(i)
if i != abs(n) // i:
large.append(abs(n) // i)
i += 1
divisors = small + sorted(large)
# если нужен полный набор делителей с учётом знака, можно расширить:
# divisors = sorted(set(small + large) if n > 0 else set([*small, *large, -d for d in small+large]))
print("Делители:", divisors)
вызов
divisors_of_number()
- Для чисел от 1 до 100: FizzBuzz
Условия:
- Если число делится на 3, добавить "Fizz".
- Если делится на 5, добавить "Buzz".
- Если число делится и на 3, и на 5, получаем "FizzBuzz" (то есть комбинируем строки).
- Если ничего не условию — выводим само число.
Код:
def fizz_buzz_1_to_100():
for num in range(1, 101):
out = ""
if num % 3 == 0:
out += "Fizz"
if num % 5 == 0:
out += "Buzz"
print(out or num)
вызов
fizz_buzz_1_to_100()
Если нужно, могу адаптировать стиль вывода под конкретный класс или задать параметры через аргументы функций.