• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 4. строки

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Сериалы»

Привет! Давай создадим что-то забавное. Представь, что ты хочешь придумать уникальное название для нового проекта, объединив названия двух своих любимых сериалов.

Твоя программа должна запросить у пользователя названия двух сериалов. Затем она должна взять первое слово из названия первого сериала и добавить к нему полное название второго сериала, разделяя их пробелом.

Например, если первый сериал — «Очень странные дела», а второй — «Ведьмак», результат должен быть «Очень Ведьмак».

Если название первого сериала состоит всего из одного слова, то нужно взять его целиком. Программа также должна проверять, что пользователь ввёл названия обоих сериалов.

 

Формат ввода

Название первого сериала (строка).
Название второго сериала (строка).

Формат Вывода

Новое объединенное название (строка) или сообщение об ошибке (строка).

Пример

Ввод

Игра престолов
Бумажный дом

Вывод

Игра Бумажный дом

Подсказка

Всё о строках в Python: от основ до полезных трюков

Строка в Python — это упорядоченная последовательность символов. Для создания строки её необходимо заключить в одинарные ('...'), двойные ("...") или даже тройные кавычки ("""...""" или '''...'''), которые особенно полезны для многострочных текстов.

Ключевая особенность строк в Python — их неизменяемость (immutability). Это означает, что после создания строки вы не можете изменить её отдельные символы. Любая операция, которая "изменяет" строку, на самом деле создает новую.

string1 = "Hello, World!"
string2 = 'Python is fun'
# Пример многострочной строки
multiline_string = """Это строка,
которая занимает
несколько строк кода."""

Индексация строк

Каждый символ в строке имеет свой уникальный номер, или индекс. Индексация позволяет нам получить доступ к любому отдельному символу.

Важно помнить: Индексация в Python всегда начинается с 0, а не с 1. Попытка обратиться к несуществующему индексу вызовет ошибку IndexError.

w = "Python"
print(w[0])  # Вывод: P
print(w[1])  # Вывод: y
print(w[2])  # Вывод: t
print(w[3])  # Вывод: h
print(w[4])  # Вывод: o (а не 0, как в исходном примере)

Также существует отрицательная индексация, которая очень удобна для доступа к символам с конца строки, где -1 — это последний символ, -2 — предпоследний и так далее.

print(w[-1]) # Вывод: n (последний символ)
print(w[-2]) # Вывод: o (предпоследний символ)

Срезы строк (Slicing)

Срезы — это мощный инструмент для извлечения части строки (подстроки). Они позволяют получить не один символ, а целый диапазон.

Общий синтаксис: строка[начало : конец : шаг]

  • начало : индекс, с которого начинается срез (этот символ включается в результат).
  • конец : индекс, на котором срез заканчивается (этот символ не включается в результат).
  • шаг : определяет, с каким интервалом извлекать символы (по умолчанию равен 1).

Примеры срезов

Извлечение подстроки

string = "Hello, World!"
substring = string[0:5] # Символы с 0 по 4 включительно
print(substring)  # Вывод: Hello

Отсутствие начального или конечного индекса Если опустить начальный индекс, срез начнется с самого начала строки. Если опустить конечный — продолжится до самого конца.

string = "Hello, World!"
substring1 = string[:5]   # С начала до индекса 5 (не включительно)
substring2 = string[7:]   # С индекса 7 и до конца строки
print(substring1)   # Вывод: Hello
print(substring2)   # Вывод: World!

Использование шага Шаг позволяет "перепрыгивать" через символы. Например, шаг 2 берет каждый второй символ.

string = "Hello, World!"
substring = string[::2] # Каждый второй символ от начала до конца
print(substring)  # Вывод: Hlo ol!

Отрицательные индексы в срезах Их можно комбинировать для получения частей строки с конца.

string = "Hello, World!"
substring = string[-6:-1] # Начинаем с 6-го символа с конца и идем до 1-го с конца
print(substring)  # Вывод: World

Полезный трюк: переворот строки Самый простой и популярный способ перевернуть строку — это использовать срез с шагом -1.

string = "Hello, World!"
reversed_string = string[::-1]
print(reversed_string)  # Вывод: !dlroW ,olleH

Сложение и умножение строк

Сложение (конкатенация) выполняется с помощью оператора +. Он "склеивает" строки в одну новую.

str1 = "Hello"
str2 = "World"
result = str1 + ", " + str2 + "!"
print(result)  # Вывод: Hello, World!

Важный совет: Нельзя складывать строку с числом напрямую. Чтобы это сделать, число нужно сначала преобразовать в строку с помощью функции str().

# print("Age: " + 25) # Вызовет TypeError
print("Age: " + str(25)) # Правильно! Вывод: Age: 25

Умножение выполняется с помощью оператора *, который повторяет строку заданное количество раз. Это удобно для создания разделителей или форматирования.

string = "Go"
result = string * 3
print(result)  # Вывод: GoGoGo
print("-" * 20) # Вывод: --------------------

Полезные операции со строками

Длина строки Встроенная функция len() возвращает количество символов в строке.

my_string = "Hello"
print(len(my_string))  # Выведет: 5

Проверка на вхождение подстроки Операторы in и not in позволяют проверить, содержится ли одна строка внутри другой. Результатом будет True или False.

Помните: эта проверка чувствительна к регистру! 'd' и 'D' — это разные символы.

name = "Daniil"
password = "Qwerty2000!"
print('D' in name)      # Выведет: True
print('d' in name)      # Выведет: False
print('3' not in password) # Выведет: True

Перебор символов в строке

Строку можно перебрать в цикле for. Есть два основных способа, и выбор зависит от задачи.

Способ 1: Простой перебор (более "питоничный") Этот способ используется, когда вам нужны только сами символы строки. Он проще и читабельнее.

a = "1516 the best"
for char in a: # Переменная char последовательно принимает значение каждого символа
    if char in "1234567890":
        print(char)

Способ 2: Перебор по индексам Этот способ нужен, когда вам важен не только сам символ, но и его позиция (индекс).

a = "1516 the best"
for i in range(len(a)): # i будет принимать значения от 0 до len(a)-1
    if a[i] in "1234567890":
        print(f"Найден символ '{a[i]}' на позиции {i}")

Заключение и что дальше?

Мы рассмотрели базовые, но очень важные операции:

  • Индексация для доступа к отдельным символам.
  • Срезы для извлечения подстрок — невероятно гибкий инструмент.
  • Конкатенация (+) и повторение (*) для создания новых строк.

Это основа, на которой строится вся работа с текстом в Python. Чтобы двигаться дальше, изучите методы строк. Это встроенные функции, которые позволяют делать со строками еще больше полезных вещей, например:

  • .lower() / .upper() — привести всю строку к нижнему или верхнему регистру.
  • .strip() — убрать пробелы и переносы строк в начале и в конце.
  • .replace('старое', 'новое') — заменить все вхождения одной подстроки на другую.
  • .split() — разбить строку на список по разделителю (например, по пробелу).
  • .startswith('префикс') / .endswith('суффикс') — проверить, начинается или заканчивается ли строка на определенную последовательность символов.
main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Запрашиваем у пользователя название первого сериала
series1 = input()
# Запрашиваем у пользователя название второго сериала
series2 = input()

# Создаем пустую строку, чтобы записать в нее первое слово
first_word = ""

# Запускаем цикл for, который перебирает каждый символ в названии первого сериала
for char in series1:
    # Проверяем условие: если текущий символ - это пробел
    if char == ' ':
        # Если это пробел, то мы нашли конец первого слова, выходим из цикла
        break
    # Если это не пробел, добавляем символ к нашему слову
    first_word += char

# Проверяем условие: если мы смогли получить первое слово и второй сериал не пустой
if first_word and series2:
    # Соединяем (конкатенируем) первое слово, пробел и название второго сериала
    new_title = first_word + " " + series2
    # Выводим результат на экран
    print(new_title)
else:
    # Если одно из полей было пустым, выводим сообщение об ошибке
    print("Ошибка: необходимо ввести оба названия сериалов.")

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!