🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Вы устроились на стажировку в крупную компанию. Ваша первая задача — помочь автоматизировать проверку имен файлов с ежедневными отчетами. В компании существует строгое правило: все файлы с отчетами должны иметь имя, которое начинается с префикса report_ и заканчивается расширением .txt. Имена могут быть разными, например: report_2025-05-06.txt или report_sales_summary.txt.
Вам нужно написать программу, которая будет проверять список имен файлов на соответствие этому правилу. Программа не должна открывать или создавать файлы, она работает только с их именами в виде строк.
Задание:
Напишите программу, которая:
report_.txt
Сначала вводится количество файлов для проверки (целое число). Затем в каждой новой строке вводится по одному имени файла (строка).
Для каждого введенного имени файла выводится результат проверки в новой строке: "Корректно" или "Некорректно" (строка).
4
report_2025.txt
my_report.txt
report_data.csv
report_final_version.txt
Корректно
Некорректно
Некорректно
Корректно
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) |
Форматирование строки (более современная альтернатива %). |
# Запрашиваем у пользователя, сколько имен файлов он хочет проверить
count_str = input()
# Преобразуем полученную строку в целое число (integer)
count = int(count_str)
# Создаем цикл, который будет повторяться 'count' раз
for i in range(count):
# На каждой итерации цикла запрашиваем имя файла
filename = input()
# Проверяем одновременно два условия с помощью 'and':
# 1. filename.startswith("report_") - проверяет, что строка начинается с "report_"
# 2. filename.endswith(".txt") - проверяет, что строка заканчивается на ".txt"
if filename.startswith("report_") and filename.endswith(".txt"):
# Если оба условия выполнены, выводим "Корректно"
print("Корректно")
else:
# Если хотя бы одно из условий не выполнено, выводим "Некорректно"
print("Некорректно")
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...