Решение задания 1: Найди делители
number = int(input("Введите число: "))
candidate = 1
print("Делители числа: ", end="")
while candidate <= number:
if number % candidate == 0:
print(candidate, end="")
if candidate != number:
print(", ", end="")
candidate += 1
print()
Логика решения: переменная candidate перебирает числа от 1 до number. Если number делится на candidate без остатка, это делитель. Запятая после числа не печатается для последнего делителя.
Решение задания 2: Простые числа
import math
limit = int(input("Введите число: "))
current = 2
first = True
print("Простые числа: ", end="")
while current <= limit:
is_prime = True
divisor = 2
while divisor <= int(math.isqrt(current)):
if current % divisor == 0:
is_prime = False
break
divisor += 1
if is_prime:
if not first:
print(", ", end="")
print(current, end="")
first = False
current += 1
print()
Логика решения: внешний цикл перебирает числа от 2 до N. Внутренний цикл проверяет делимость от 2 до квадратного корня из текущего числа. Если делитель найден, число составное. В Python 3.8+ math.isqrt возвращает целую часть корня.
math.isqrt ещё не изучался, можно заменить int(math.sqrt(current)).
Решение задания 3: Найди подстроку
text = input("Введите строку: ")
print(f"Содержит 'Python': {'Python' in text}")
Логика решения: оператор in проверяет вхождение подстроки. Результат — True или False.
Версия через цикл и срезы:
text = input("Введите строку: ")
target = "Python"
lower_text = text.lower()
lower_target = target.lower()
found = False
index = 0
while index <= len(lower_text) - len(lower_target):
if lower_text[index:index + len(lower_target)] == lower_target:
found = True
break
index += 1
print(f"Содержит '{target}': {found}")
Логика решения: цикл сравнивает подстроки длины target, начиная с каждой позиции. При совпадении цикл прерывается через break. Регистр приведён к нижнему для поиска без учёта регистра.
Решение дополнительного задания: случайная строка
import random
letters = "abcdefghijklmnopqrstuvwxyz"
result = ""
length = 10
index = 0
while index < length:
result += random.choice(letters)
index += 1
print(f"Random string: {result}")
Логика решения: цикл добавляет случайную букву к строке result до достижения нужной длины. Поскольку строки неизменяемы, каждое сложение создаёт новую строку.