✅ Решения заданий

⚠️ Рекомендация: попробуйте решить задания самостоятельно, прежде чем смотреть ответы. Решения — это последняя инстанция, когда собственные попытки исчерпаны.

Решение задания 1: Числа от 1 до N

📄 task_01_count.py
n = int(input("Введите N: "))

for i in range(1, n + 1):
    print(i)

Логика решения: range(1, n + 1) генерирует числа от 1 до n включительно. Верхняя граница n + 1 нужна потому, что stop не включается в диапазон.

Решение задания 2: Факториал числа

📄 task_02_factorial.py
num = int(input("Введите число: "))
factorial = 1

for i in range(1, num + 1):
    factorial *= i

print(f"Факториал числа {num} равен {factorial}")

Логика решения: переменная factorial накапливает произведение чисел от 1 до num. При num = 0 цикл не выполняется, и результат остаётся равным 1, что соответствует 0! = 1.

Решение задания 3: Звёздный прямоугольник

📄 task_03_star_rectangle.py
width = int(input("Введите ширину: "))
height = int(input("Введите высоту: "))

for _ in range(height):
    for _ in range(width):
        print("*", end="")
    print()

Логика решения: внешний цикл повторяется height раз — по разу для каждой строки. Внутренний цикл печатает width звёздочек в одну строку благодаря end="". print() без аргументов переводит каретку на новую строку. Переменная цикла названа _, потому что её значение не используется.

Решение задания 4: Простое число

📄 task_04_prime.py
num = int(input("Введите число: "))

if num > 1:
    for i in range(2, num):
        if num % i == 0:
            print("Не является простым")
            break
    else:
        print("Является простым")
else:
    print("Не является простым")

Логика решения: числа меньше или равные 1 не являются простыми. Для остальных проверяем делимость на все числа от 2 до num - 1. Если делитель найден, выводим результат и прерываем цикл через break. Если цикл завершился без break, сработает else — число простое.

💡 Оптимизация: достаточно проверять делители до int(num ** 0.5) + 1. Если у числа есть делитель больше корня, то есть и соответствующий меньший делитель.
📄 task_04_prime_optimized.py
num = int(input("Введите число: "))

if num > 1:
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            print("Не является простым")
            break
    else:
        print("Является простым")
else:
    print("Не является простым")

Решение задания 5: Буквы и цифры

📄 task_05_letters_digits.py
text = input("Введите строку: ")
letters = 0
digits = 0

for char in text:
    if char.isalpha():
        letters += 1
    elif char.isdigit():
        digits += 1

print(f"Букв: {letters}")
print(f"Цифр: {digits}")

Логика решения: цикл перебирает каждый символ строки. Метод .isalpha() проверяет, является ли символ буквой, а .isdigit() — цифрой. Пробелы и знаки препинания игнорируются.