Рядки в Python — це незмінні (immutable) послідовності символів. Кожен метод рядка повертає **новий** рядок, оригінал залишається незмінним.
## Зміна регістру
```python
text = "hello world"
print(text.upper()) # "HELLO WORLD"
print(text.lower()) # "hello world"
print(text.capitalize()) # "Hello world"
print(text.title()) # "Hello World"
print(text.swapcase()) # "HELLO WORLD"
```
## Видалення пробілів
```python
s = " hello "
print(s.strip()) # "hello" — з обох сторін
print(s.lstrip()) # "hello " — тільки зліва
print(s.rstrip()) # " hello" — тільки справа
```
`strip()` — найпоширеніший спосіб очистити введення користувача.
## Пошук і перевірка
```python
s = "Python is great"
print(s.find("is")) # 7 — індекс першого входження, -1 якщо не знайдено
print(s.index("is")) # 7 — те саме, але кидає ValueError якщо не знайдено
print(s.count("t")) # 2
print(s.startswith("Py")) # True
print(s.endswith("eat")) # True
print("123".isdigit()) # True
print("abc".isalpha()) # True
print("abc123".isalnum()) # True
```
## Заміна і розбиття
```python
s = "one two three"
print(s.replace("two", "2")) # "one 2 three"
print(s.split()) # ["one", "two", "three"]
print(s.split(" ", maxsplit=1)) # ["one", "two three"]
```
`split()` без аргументів розбиває по будь-яких пробілах і видаляє порожні елементи.
## Об'єднання
```python
words = ["one", "two", "three"]
print(", ".join(words)) # "one, two, three"
print("-".join(words)) # "one-two-three"
print("".join(words)) # "onetwothree"
```
`join` — це зворотній до `split`: завжди викликається на **роздільнику**, а не на списку.
## Вирівнювання та заповнення
```python
s = "hello"
print(s.ljust(10)) # "hello "
print(s.rjust(10)) # " hello"
print(s.center(11, "-")) # "---hello---"
print("42".zfill(5)) # "00042"
```
## Головне правило
Оскільки рядки незмінні, потрібно **привласнювати** результат:
```python
name = " Alice "
name = name.strip() # правильно
name.strip() # нічого не відбувається — результат відкидається
```
f-strings (форматовані рядкові літерали) — це сучасний і читабельний спосіб вставляти значення та вирази безпосередньо в рядки. Вони швидші за `%`-форматування і `.format()`.
## Базовий синтаксис
```python
name = "Alice"
age = 30
print(f"Hello, {name}! You are {age} years old.")
# Hello, Alice! You are 30 years old.
```
Всередині `{}` можна вставляти будь-яку змінну або вираз:
```python
a, b = 7, 3
print(f"{a} + {b} = {a + b}") # 7 + 3 = 10
print(f"{'hello'.upper()}") # HELLO
```
## Форматування чисел
```python
price = 9.5
pi = 3.14159
score = 0.876
print(f"{price:.2f}") # 9.50 — 2 знаки після коми
print(f"{pi:.4f}") # 3.1416 — 4 знаки після коми
print(f"{score:.1%}") # 87.6% — відсоток
print(f"{1000000:,}") # 1,000,000 — роздільник тисяч
print(f"{42:08d}") # 00000042 — ціле з нулями
print(f"{42:>10}") # 42 — вирівнювання праворуч
print(f"{42:<10}") # 42 — вирівнювання ліворуч
print(f"{42:^10}") # 42 — по центру
```
## Налагодження з `=`
```python
x = 42
items = [1, 2, 3]
print(f"{x=}") # x=42
print(f"{items=}") # items=[1, 2, 3]
print(f"{len(items)=}") # len(items)=3
```
Специфікатор `=` виводить і сам вираз, і його значення — ідеально для швидкого налагодження.
## Багаторядкові f-strings
```python
name = "Bob"
total = 123.45
message = (
f"Підсумок замовлення\n"
f"Клієнт: {name}\n"
f"Сума: ${total:.2f}"
)
print(message)
# Підсумок замовлення
# Клієнт: Bob
# Сума: $123.45
```
## Практичний приклад
```python
def format_report(name, score, passed):
status = "PASS" if passed else "FAIL"
return f"[{status}] {name}: {score:.1f}/100"
print(format_report("Alice", 87.5, True)) # [PASS] Alice: 87.5/100
print(format_report("Bob", 45.0, False)) # [FAIL] Bob: 45.0/100
```
Напишіть функцію `format_name(name)`, яка приймає рядок і повертає його у форматі title case (кожне слово з великої літери). Приклад: `format_name("john doe")` → `"John Doe"`.
def format_name(name):
pass
print(format_name("john doe")) # John Doe
print(format_name("ALICE SMITH")) # Alice Smith
Рішення
def format_name(name):
return name.title()
print(format_name("john doe")) # John Doe
print(format_name("ALICE SMITH")) # Alice Smith
Напишіть функцію `clean(s)`, яка видаляє пробіли на початку/кінці рядка і переводить його у нижній регістр. Приклад: `clean(" Hello World ")` → `"hello world"`.
def clean(s):
pass
print(clean(" Hello World ")) # hello world
print(clean(" Python ")) # python
Рішення
def clean(s):
return s.strip().lower()
print(clean(" Hello World ")) # hello world
print(clean(" Python ")) # python
Напишіть функцію `count_word(text, word)`, яка підраховує, скільки разів `word` зустрічається у `text` (без урахування регістру). Приклад: `count_word("Apple apple APPLE", "apple")` → `3`.
def count_word(text, word):
pass
print(count_word("Apple apple APPLE", "apple")) # 3
print(count_word("cat cat dog cat", "cat")) # 3
Рішення
def count_word(text, word):
return text.lower().count(word.lower())
print(count_word("Apple apple APPLE", "apple")) # 3
print(count_word("cat cat dog cat", "cat")) # 3
Напишіть функцію `censor(text, word)`, яка замінює всі входження `word` у `text` зірочками тієї самої довжини. Приклад: `censor("I love cats", "cats")` → `"I love ****"`.
def censor(text, word):
pass
print(censor("I love cats", "cats")) # I love ****
print(censor("hello world", "world")) # hello *****
Рішення
def censor(text, word):
return text.replace(word, "*" * len(word))
print(censor("I love cats", "cats")) # I love ****
print(censor("hello world", "world")) # hello *****
Напишіть функцію `is_url(s)`, яка повертає `True`, якщо рядок починається з `"http://"` або `"https://"` і закінчується на `".com"`, `".org"` або `".net"`. Інакше повертає `False`.
Напишіть функцію `greet(name, age)`, яка повертає привітання через f-string: `"Hello, {name}! You are {age} years old."`. Приклад: `greet("Alice", 25)` → `"Hello, Alice! You are 25 years old."`.
def greet(name, age):
pass
print(greet("Alice", 25)) # Hello, Alice! You are 25 years old.
print(greet("Bob", 30)) # Hello, Bob! You are 30 years old.
Рішення
def greet(name, age):
return f"Hello, {name}! You are {age} years old."
print(greet("Alice", 25)) # Hello, Alice! You are 25 years old.
print(greet("Bob", 30)) # Hello, Bob! You are 30 years old.
Напишіть функцію `format_price(amount)`, яка форматує число як ціну з 2 знаками після коми та префіксом `$`. Приклад: `format_price(9.5)` → `"$9.50"`, `format_price(1000)` → `"$1,000.00"`.
Напишіть функцію `safe_find(text, sub)`, яка повертає індекс першого входження `sub` у `text`, або `-1` якщо не знайдено. НЕ використовуйте `.index()`. Приклад: `safe_find("hello", "ll")` → `2`, `safe_find("hello", "x")` → `-1`.
Ми використовуємо необхідні cookies для роботи сайту. З вашого дозволу ми також можемо зберігати налаштування сайту та використовувати аналітичні й рекламні cookies, щоб розуміти використання сайту й підтримувати розвиток проєкту.
* Ви завжди можете змінити свій вибір у налаштуваннях сайту.
Оберіть категорії cookies
Налаштування аналітики
Можна вимкнути аналітику використання платформи. Також можна надіслати в Google Analytics запит на видалення даних про використання цього сайту, пов'язаних із цим браузером.
Навчальний workspace
Навчайтеся, читаючи, запускаючи код і розв'язуючи задачі.
Практикуйте програмування з поясненнями тем, вправами, інструментами browser IDE, перевіркою regex і тренуванням друку коду в одному workspace.
Відкривайте інструменти у вкладках.Вправи, IDE-інструменти й тренажери залишаються доступними як вкладки сайту.
Перемикайтеся без втрати контексту.Переходьте між поясненнями, кодом та утилітами, зберігаючи своє місце.
Використовуйте sidebar як карту.Ліві панелі містять навігацію, налаштування, файли, libraries та керування інструментами.
PythonJavaScriptSQLite
Одна IDE, три практичні режими
Python у браузері.Запускайте невеликі скрипти, пробуйте бібліотеки й тренуйте API-запити без встановлення.
JavaScript для швидких експериментів.Перевіряйте код для браузера й порівнюйте ідеї поруч із навчальними матеріалами.
SQLite для практики з даними.Відкривайте оглядач бази даних, переглядайте таблиці, пишіть запити й вивчайте SQL локально.
ТемаIDE
Працюйте поруч у split tabs
Тримайте інструкції перед очима.Відкрийте вправу або довідкову сторінку поруч з IDE, замість постійних перемикань.
Порівнюйте інструменти під час навчання.Розміщуйте перевірки regex, пояснення та експерименти з кодом поруч, коли це потрібно для задачі.
Закрийте split, коли завершите.Workspace повернеться до однієї сфокусованої вкладки, а відкриті вкладки сайту залишаться доступними.
Тренажер друку коду
Або звичайного тексту
Тренажер розрахований на фізичну клавіатуру.Відкрийте цей розділ на ноутбуці або комп'ютері з широким екраном. На телефоні тренування друку не працюватиме коректно.
Швидкість: 0 зн/хв
0 слів/хв
Найкраща швидкість (60с): 0 зн/хв
0 слів/хв
Помилки: 0
Загальний час: 0.0 с
Щоб тренувати сліпий друк, не підглядайте на фізичну клавіатуру.