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

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

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

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

Задача«NFT»

Представь, что ты — создатель популярной NFT-коллекции и придумал уникальное название для своего нового токена. Прежде чем запускать его в продажу, ты хочешь провести небольшой технический анализ названия, чтобы убедиться, что оно соответствует твоим "счастливым" криптографическим правилам. Для этого тебе нужно написать программу, которая проведет несколько операций с введенной строкой.

Задание: Напиши программу, которая принимает на вход одну строку (название NFT) и последовательно выводит:

  1. Третий символ этой строки.
  2. Предпоследний символ этой строки.
  3. Первые пять символов этой строки.
  4. Всю строку, кроме последних двух символов.
  5. Все символы с четными индексами (индексация с 0, т.е. первый, третий, пятый и т.д. символы).
  6. Все символы с нечетными индексами (т.е. второй, четвертый, шестой и т.д. символы).
  7. Все символы в обратном порядке.
  8. Все символы строки через один в обратном порядке, начиная с последнего.
  9. Общую длину данной строки.

Каждый результат должен выводиться на новой строке.

Формат ввода

Название для NFT (строка). Вводится одна строка без пробелов или с ними.

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

Результаты анализа строки, каждый на новой строке (всего 9 строк: 8 из них содержат строки или символы, а последняя — число).

Пример

Ввод

CryptoPunks

Вывод

y
k
Crypt
CryptoPu
CytoPn
rpo-uks
sknuPotpyrC
snPtrC
12

Подсказка

Всё о строках в 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
Решение разработчика
# Запрашиваем у пользователя строку для анализа
nft_name = input()

# 1) Выводим третий символ этой строки (индекс 2, так как счет начинается с 0)
print(nft_name[2])

# 2) Выводим предпоследний символ этой строки (используем отрицательный индекс -2)
print(nft_name[-2])

# 3) Выводим первые пять символов этой строки (срез от начала до 5-го элемента, не включая его)
print(nft_name[:5])

# 4) Выводим всю строку, кроме последних двух символов (срез от начала до -2 элемента)
print(nft_name[:-2])

# 5) Выводим все символы с четными индексами (срез от начала до конца с шагом 2)
print(nft_name[::2])

# 6) Выводим все символы с нечетными индексами (срез от элемента с индексом 1 до конца с шагом 2)
print(nft_name[1::2])

# 7) Выводим все символы в обратном порядке (срез от начала до конца с шагом -1)
print(nft_name[::-1])

# 8) Выводим все символы через один в обратном порядке (срез от начала до конца с шагом -2)
print(nft_name[::-2])

# 9) Выводим длину данной строки (используем встроенную функцию len)
print(len(nft_name))

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

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

AD

Реклама

red-snake blue-snake green-snake

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

Помощник ИИ

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