📜 Классический подход из занятия
До знакомства с методами строк многие задачи решаются циклами. Это помогает понять алгоритм, но получается многословно.
1. Проверка, состоит ли строка только из цифр
📄 examples/classic_isdigit_loop.py
text = "12345"
is_digit = True
for char in text:
if char < "0" or char > "9":
is_digit = False
break
print(is_digit)
2. Замена символов в строке
📄 examples/classic_replace_loop.py
text = "hello world"
old_char = "o"
new_char = "0"
result = ""
for char in text:
if char == old_char:
result += new_char
else:
result += char
print(result)
3. Разделение строки по разделителю
📄 examples/classic_split_loop.py
text = "apple,banana,cherry"
separator = ","
parts = []
current = ""
for char in text:
if char == separator:
parts.append(current)
current = ""
else:
current += char
parts.append(current)
print(parts)
4. Проверка начала строки
📄 examples/classic_startswith_loop.py
text = "hello world"
prefix = "hello"
starts = True
for i in range(len(prefix)):
if i >= len(text) or text[i] != prefix[i]:
starts = False
break
print(starts)
✅ Рекомендуемый современный вариант
1. Проверка цифр через isdigit()
📄 examples/modern_isdigit.py
text = "12345"
print(text.isdigit())
2. Замена через replace()
📄 examples/modern_replace.py
text = "hello world"
print(text.replace("o", "0"))
3. Разделение через split()
📄 examples/modern_split.py
text = "apple,banana,cherry"
print(text.split(","))
4. Проверка начала строки через startswith()
📄 examples/modern_startswith.py
text = "hello world"
print(text.startswith("hello"))
5. Форматирование через f-strings
📄 examples/modern_fstring.py
name = "Python"
version = 3
print(f"Язык: {name}, версия: {version}")
Преимущества современного стиля:
- Меньше кода — меньше возможностей для ошибок.
- Методы строк реализованы на C и обычно работают быстрее циклов на Python.
- Читаемость: код ближе к описанию задачи.
- f-strings заменяют громоздкую конкатенацию.
🕰️ Когда классический подход всё ещё полезен
- На начальном этапе обучения — чтобы понять, как устроены алгоритмы.
- Когда встроенного метода недостаточно, например, нужна нестандартная логика замены.
- Когда важно обработать каждый символ отдельно и собрать сложный результат.
🔧 Регулярные выражения как альтернатива
Для сложного поиска и замены (шаблоны, группы, повторы) иногда удобнее использовать модуль re. Например, заменить все числа в строке, независимо от их длины:
📄 examples/modern_regex.py
import re
text = "I have 5 apples and 10 oranges"
result = re.sub(r"\d+", "X", text)
print(result)
# I have X apples and X oranges
Проверить по документации: модуль
re (регулярные выражения), f-strings и генераторные выражения выходят за рамки исходного занятия. Подробности — в разделе Ресурсы.
🔍 Как распознать устаревший код
Если вы видите цикл, который только перебирает символы строки для выполнения стандартной операции, его часто можно заменить методом строк:
text = "hello world"
# устаревший подход
upper_text = ""
for char in text:
upper_text += char.upper()
print("classic:", upper_text)
# современный подход
print("modern:", text.upper())