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

⚡ Решения в двух словах

  • Задания 1–2 — split(), int(), sum(), срез [::-1].
  • Задания 3–5 — циклы по списку или по индексам через range().
  • Задания 6–15 — методы строк, списки, циклы, join().

Ответы на разминку

  • 1 — b: False.
  • 2 — a: True.
  • 3 — b: 7.
  • 4 — b: 2.
  • 5 — c: "hELLO, WORLd!".
  • 6 — b: ['Python', ' Java', ' C++'].

Решение задания 1: сложение чисел

📄 task_01_sum.py
raw = input("Введите список чисел через пробел: ")
numbers = []
for item in raw.split():
    numbers.append(int(item))
print(f"Сумма чисел: {sum(numbers)}")

Логика: разбиваем строку по пробелам, каждый фрагмент преобразуем в число и суммируем.

💡 Современный вариант:
numbers = [int(x) for x in input("Введите список чисел через пробел: ").split()]
print(f"Сумма чисел: {sum(numbers)}")

Решение задания 2: обратный список

📄 task_02_reverse.py
raw = input("Введите список чисел через пробел: ")
numbers = []
for item in raw.split():
    numbers.append(int(item))
reversed_numbers = numbers[::-1]
print(f"Обратный список: {reversed_numbers}")

Логика: преобразуем строку в список чисел и разворачиваем его срезом.

Решение задания 3: сумма чётных и нечётных

📄 task_03_even_odd.py
numbers = [-1, 8, 2, 0, -3, -9, -1, 10, 7, -4]
even_sum = 0
odd_sum = 0

for number in numbers:
    if number % 2 == 0:
        even_sum += number
    else:
        odd_sum += number

print(f"Изначальный список: {numbers}")
print(f"Сумма чётных: {even_sum}")
print(f"Сумма нечётных: {odd_sum}")

Решение задания 4: максимальное число

📄 task_04_max.py
numbers = [3, 12, 8, 22, 9, 25, 6, 23, 8, 7]
maximum = numbers[0]
max_index = 0

for i in range(1, len(numbers)):
    if numbers[i] > maximum:
        maximum = numbers[i]
        max_index = i

print(f"Список чисел: {numbers}")
print(f"Наибольшее число: {maximum}")
print(f"Индекс числа: {max_index}")

Решение задания 5: перестановка соседних элементов

📄 task_05_swap.py
numbers = [1, 2, 3, 4, 5]
print(f"Изначальный список: {numbers}")

for i in range(0, len(numbers) - 1, 2):
    numbers[i], numbers[i + 1] = numbers[i + 1], numbers[i]

print(f"Список после перестановки: {numbers}")

Решение задания 6: числа и слова

📄 task_06_words_numbers.py
text = "apple 42 banana 3 100 orange"
result = []

for item in text.split():
    if item.isdigit():
        result.append(int(item))
    else:
        result.append(item.capitalize())

print(f"Изначальная строка: {text}")
print(f"Результат: {result}")
💡 Современный вариант:
text = "apple 42 banana 3 100 orange"
result = [int(x) if x.isdigit() else x.capitalize() for x in text.split()]
print(f"Результат: {result}")

Решение задания 7: кодирование строки

📄 task_07_rle.py
text = input("Введите строку: ")
if not text:
    print("Пустая строка")
else:
    encoded = []
    current = text[0]
    count = 1

    for char in text[1:]:
        if char == current:
            count += 1
        else:
            encoded.append(current + str(count))
            current = char
            count = 1

    encoded.append(current + str(count))
    print(f"Закодированная строка: {''.join(encoded)}")

Решение задания 8: проверка формата email

📄 task_08_email.py
email = input("Введите email: ")
is_valid = (
    len(email) > 0
    and email[0].isalpha()
    and "@" in email
    and (email.endswith(".com") or email.endswith(".de"))
)
print(f"Корректный формат? {is_valid}")

Решение задания 9: звёздочки вместо чисел

📄 task_09_stars.py
text = input("Введите строку: ")
result = ""
for char in text:
    if char.isdigit():
        result += "*"
    else:
        result += char
print(f"Результат: {result}")
💡 Современный вариант:
text = input("Введите строку: ")
result = "".join("*" if char.isdigit() else char for char in text)
print(f"Результат: {result}")

Решение задания 10: развернуть слова

📄 task_10_reverse_words.py
text = input("Введите строку: ")
words = text.split()
reversed_words = []
for word in words:
    reversed_words.append(word[::-1])
result = " ".join(reversed_words)
print(f"Результат: {result}")
💡 Современный вариант:
text = input("Введите строку: ")
result = " ".join(word[::-1] for word in text.split())
print(f"Результат: {result}")

Решение задания 11: количество символов

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

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

print(f"Буквы: {letters}")
print(f"Цифры: {digits}")
print(f"Пробелы: {spaces}")
print(f"Остальные символы: {others}")

Решение задания 12: по одному пробелу

📄 task_12_single_space.py
text = "  Hello, World!   How are you?  "
result = " ".join(text.split())
print(f"Строка: '{text}'")
print(f"Результат: '{result}'")

Решение задания 13: все позиции подстроки

📄 task_13_all_positions.py
text = "Banana bAnana baNAna"
substring = "ban"
search_text = text.lower()
search_substring = substring.lower()

start = 0
positions = []
while True:
    position = search_text.find(search_substring, start)
    if position == -1:
        break
    positions.append(position)
    start = position + 1

print(f"Строка: {text}")
print(f"Подстрока: {substring}")
for position in positions:
    print(f"Позиция: {position}")

Решение задания 14: корректные имена

📄 task_14_valid_names.py
names = ["Alice", "bob", "Charlie", "dave", "Eva", "Frank123"]
print("Имена с заглавной буквы и без цифр:")
for name in names:
    if name[0].isupper() and name.isalpha():
        print(name)
💡 Современный вариант:
names = ["Alice", "bob", "Charlie", "dave", "Eva", "Frank123"]
valid = [name for name in names if name[0].isupper() and name.isalpha()]
print("Имена с заглавной буквы и без цифр:")
print("\n".join(valid))

Решение задания 15: квадрат чисел

📄 task_15_square_numbers.py
text = "I have 2 apples and 4 bananas"
words = text.split()
for i in range(len(words)):
    if words[i].isdigit():
        number = int(words[i])
        words[i] = str(number * number)
result = " ".join(words)
print(result)
💡 Современный вариант:
text = "I have 2 apples and 4 bananas"
result = " ".join(
    str(int(word) ** 2) if word.isdigit() else word
    for word in text.split()
)
print(result)
Проверить по документации: list comprehensions, генераторные выражения, f-strings и встроенные функции sum(), max() в данном контексте выходят за рамки исходного занятия. Они описаны в официальной документации Python.