🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Представь, что ты работаешь младшим маркетологом в крупной спортивной компании. Твой бренд недавно приобрел другую, менее известную компанию. Твоя задача — срочно обновить все старые рекламные тексты, заменив упоминания старого бренда на новый, "Adidas". Чтобы не делать это вручную и не допускать ошибок, ты решил написать небольшую программу.
Задача: Напиши программу, которая принимает на вход две строки: сначала рекламный текст, а затем название бренда, который нужно заменить. Программа должна заменить все вхождения этого бренда в тексте на слово "Adidas" и вывести на экран обновленный текст.
Важное условие: Название бренда может стоять в любом месте предложения и после него может быть знак препинания (например, точка, запятая или восклицательный знак). Твоя программа должна корректно обрабатывать такие случаи, заменяя бренд, но сохраняя знак препинания на своем месте.
Первая строка: рекламный текст (string).
Вторая строка: название бренда для замены (string).
Одна строка: измененный текст, где все упоминания старого бренда заменены на "Adidas" (string).
Покупайте кроссовки NewBalance! Лучшая обувь - это NewBalance.
NewBalance
Покупайте кроссовки Adidas! Лучшая обувь - это Adidas.
Python предоставляет множество встроенных методов для работы со строками. Это мощные инструменты, которые позволяют легко манипулировать текстовыми данными. Все методы вызываются через точку после переменной, в которой хранится строка, по схеме переменная.метод().
Важно помнить, что строки в Python являются неизменяемыми. Это означает, что ни один из методов не меняет исходную строку. Вместо этого они возвращают новую строку с примененными изменениями.
1. upper() и lower()
Преобразуют все символы строки к верхнему или нижнему регистру соответственно.
string = "Hello, World!"
print(string.upper()) # Вывод: HELLO, WORLD!
print(string.lower()) # Вывод: hello, world!
print(string) # Вывод: Hello, World! (исходная строка не изменилась)
Полезный совет: Эти методы незаменимы, когда нужно сравнить строки без учета регистра. Например, при проверке пользовательского ввода.
user_input = "Да"
if user_input.lower() == "да":
print("Пользователь согласен.")
2. strip(), lstrip() и rstrip()
Удаляют пробельные символы (пробелы, табы, переносы строк) с начала и конца строки. lstrip() удаляет только слева, а rstrip() — только справа.
string = " Hello, World! "
print(string.strip()) # Вывод: Hello, World!
print(string.lstrip()) # Вывод: Hello, World!
print(string.rstrip()) # Вывод: Hello, World!
Полезный совет: Это крайне важные методы для "очистки" данных, полученных из файлов или от пользователей, которые часто случайно оставляют лишние пробелы. В качестве аргумента можно передать строку из символов, которые нужно удалить.
dirty_string = "!!!Hello, World!?! "
print(dirty_string.strip(" !?")) # Вывод: Hello, World
3. split() и join()
split() разделяет строку на список подстрок по указанному разделителю. join() собирает строку из элементов списка, вставляя между ними строку-разделитель.
string = "Hello, World!"
words = string.split(", ")
print(words) # Вывод: ['Hello', 'World!']
# Обратная операция
joined_string = " | ".join(words)
print(joined_string) # Вывод: Hello | World!
Полезный совет: split() — это стандартный способ для парсинга (разбора) данных, представленных в виде строки, например, CSV-файлов. join() является наиболее эффективным ("pythonic") способом собрать одну большую строку из множества мелких, он работает гораздо быстрее, чем сложение строк в цикле через +.
4. find() и replace()
find() ищет первое вхождение подстроки и возвращает ее индекс (позицию). Если подстрока не найдена, возвращает -1. replace() заменяет все вхождения одной подстроки на другую.
string = "Hello, World!"
index = string.find("World")
print(index) # Вывод: 7
new_string = string.replace("World", "Python")
print(new_string) # Вывод: Hello, Python!
Полезный совет: Существует аналог метода find() — index(). Он делает то же самое, но если подстрока не найдена, он вызывает ошибку ValueError. Используйте find(), если отсутствие подстроки — нормальная ситуация, и index(), если это должно прервать выполнение программы. Метод replace() также может принимать третий аргумент — количество замен, которые нужно сделать.
5. startswith() и endswith()
Проверяют, начинается или заканчивается ли строка определенной подстрокой. Возвращают True или False.
string = "Hello, World!"
print(string.startswith("Hello")) # Вывод: True
print(string.endswith("World!")) # Вывод: True
print(string.startswith("Bye")) # Вывод: False
Полезный совет: Очень удобно для быстрой проверки форматов файлов (filename.endswith(".txt")) или типов ссылок (url.startswith("https")).
6. isdigit(), isalpha() и isalnum()
Проверяют, из чего состоит строка.
isdigit(): True, если все символы — цифры.isalpha(): True, если все символы — буквы.isalnum(): True, если все символы — буквы или цифры.string1 = "12345"
string2 = "Hello"
string3 = "Hello123"
print(f"'{string1}' состоит из цифр? {string1.isdigit()}") # Вывод: True
print(f"'{string2}' состоит из букв? {string2.isalpha()}") # Вывод: True
print(f"'{string3}' состоит из букв и цифр? {string3.isalnum()}") # Вывод: True
print(f"'{string2}' состоит из цифр? {string2.isdigit()}") # Вывод: False
Полезный совет: Эти методы идеально подходят для валидации (проверки корректности) пользовательского ввода перед тем, как пытаться преобразовать строку в число или использовать ее дальше в программе.
Ниже представлена таблица с более полным списком строковых методов для быстрого ознакомления.
| Метод | Назначение |
|---|---|
S.find(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер первого вхождения или -1. |
S.rfind(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер последнего вхождения или -1. |
S.index(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError. |
S.rindex(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError. |
S.replace(шаблон, замена[, maxcount]) |
Замена шаблона на замену. maxcount ограничивает количество замен. |
S.split(символ) |
Разбиение строки по разделителю. |
S.isdigit() |
Состоит ли строка из цифр. |
S.isalpha() |
Состоит ли строка из букв. |
S.isalnum() |
Состоит ли строка из цифр или букв. |
S.islower() |
Состоит ли строка из символов в нижнем регистре. |
S.isupper() |
Состоит ли строка из символов в верхнем регистре. |
S.isspace() |
Состоит ли строка из неотображаемых символов (пробел, \f, \n, \r, \t, \v). |
S.istitle() |
Начинаются ли слова в строке с заглавной буквы. |
S.upper() |
Преобразование строки к верхнему регистру. |
S.lower() |
Преобразование строки к нижнему регистру. |
S.startswith(str) |
Начинается ли строка S с шаблона str. |
S.endswith(str) |
Заканчивается ли строка S шаблоном str. |
S.join(список) |
Сборка строки из списка с разделителем S. |
ord(символ) |
Преобразует символ в его код ASCII/Unicode. |
chr(число) |
Преобразует код ASCII/Unicode в символ. |
S.capitalize() |
Переводит первый символ строки в верхний регистр, а все остальные в нижний. |
S.center(width, [fill]) |
Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию). |
S.count(str, [start],[end]) |
Возвращает количество непересекающихся вхождений подстроки. |
S.expandtabs([tabsize]) |
Заменяет символы табуляции \t пробелами. |
S.lstrip([chars]) |
Удаление указанных символов (или пробельных) в начале строки. |
S.rstrip([chars]) |
Удаление указанных символов (или пробельных) в конце строки. |
S.strip([chars]) |
Удаление указанных символов (или пробельных) в начале и в конце строки. |
S.partition(шаблон) |
Разделяет строку по первому вхождению разделителя на три части: до, сам разделитель, после. |
S.rpartition(sep) |
Разделяет строку по последнему вхождению разделителя на три части: до, сам разделитель, после. |
S.swapcase() |
Переводит символы нижнего регистра в верхний, а верхнего – в нижний. |
S.title() |
Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний. |
S.zfill(width) |
Дополняет строку нулями слева до длины width. |
S.ljust(width, fillchar=" ") |
Выравнивает строку по левому краю, дополняя справа символами fillchar. |
S.rjust(width, fillchar=" ") |
Выравнивает строку по правому краю, дополняя слева символами fillchar. |
S.format(*args, **kwargs) |
Форматирование строки (более современная альтернатива %). |
# Получаем исходный текст от пользователя
source_text = input()
# Получаем название бренда, который нужно заменить
old_brand = input()
# Разбиваем весь текст на отдельные слова по пробелу
words = source_text.split(' ')
# Создаем пустой список, куда будем складывать новые слова
result_words = []
# Запускаем цикл, который перебирает каждое слово из списка words
for word in words:
# Запоминаем знак препинания, если он есть в конце слова
punctuation = ''
# Проверяем, что слово не пустое и последний символ - один из знаков препинания
if word and word[-1] in '.,!?:;':
punctuation = word[-1] # Сохраняем этот знак
clean_word = word[:-1] # Убираем знак из слова для сравнения
else:
clean_word = word # Если знака нет, чистое слово - это само слово
# Сравниваем "чистое" слово со старым брендом
if clean_word == old_brand:
# Если совпало, добавляем в наш итоговый список 'Adidas' и знак препинания
result_words.append('Adidas' + punctuation)
else:
# Если не совпало, просто добавляем оригинальное слово (с его знаком препинания)
result_words.append(word)
# Соединяем слова из списка result_words обратно в одну строку через пробел
final_text = ' '.join(result_words)
# Выводим итоговый текст на экран
print(final_text)
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...