Python · Синтаксис · Початковий рівень

Умовні оператори 2

11 завдань

Додаткова практика щодо умовних операторів у Python: перевірки строк, довжини тексту, символів, зрізів, методів str, логічних операторів and та or та простих сценаріїв обробки введення.

Рядкові операції для умов

#
Умовні оператори в цій темі працюють з рядками замість чисел. Новий навик — знати, які рядкові операції підходять для конкретного завдання. Є чотири з них, які охоплюють майже всі ситуації. Індексування дає окремі символи. Додатні індекси рахуються з початку, від'ємні — з кінця: ```python text = "Python" print(text[0]) # P — перший символ print(text[-1]) # n — останній символ print(text[-2]) # o — передостанній ``` Зріз із [start:end] витягує підрядок від індексу start до, але не включаючи, індекс end: ```python text = "Hello world" print(text[:4]) # Hell — перші 4 символи print(text[2:8]) # llo wo — від індексу 2 до 7 ``` Якщо пропустити start, Python вважає його 0. Якщо пропустити end — йде до кінця рядка. Тому text[:4] і text[0:4] — одне й те саме. Оператор in перевіряє, чи існує підрядок або символ десь у рядку: ```python if "@" in text: print("Містить @") if "#" in text or "@" in text: print("Знайдено спеціальний символ") ``` Два методи перевіряють початок і кінець рядка зручніше, ніж зріз: ```python text.startswith("Py") # True, коли text починається з "Py" text.endswith("on") # True, коли text закінчується на "on" ``` Обидва методи чутливі до регістру. "python".startswith("Py") — False.

Патерни із завдань

#
Патерн, який повторюється у цих завданнях: перевіряти довжину перед доступом до символів. Звернення до text[0] або text[-1] для порожнього рядка викликає IndexError — перевірка довжини запобігає цьому. ```python text = input("Введіть рядок: ") if len(text) > 10: print(text[0], text[-1]) else: print("Занадто короткий") ``` Для порівнянь без урахування регістру — перетворіть до нижнього регістру перед порівнянням. Метод повертає новий рядок, а не змінює text на місці: ```python text = input("Введіть фразу: ") if text.lower() == "hello": print("І вам привіт!") elif text.lower() == "goodbye": print("До побачення!") else: print("Не розумію") ``` Комбінування перевірки довжини з перевіркою вмісту — and вичислюється зліва направо, тому якщо перевірка довжини не пройде, Python пропустить решту: ```python text = input("Введіть повідомлення: ") if len(text) > 6 and text[-1] == "!": print("Емоційне повідомлення") else: print("Звичайне повідомлення") ``` Перевірка діапазону довжин використовує два порівняння з'єднані через and: ```python if len(text) >= 5 and len(text) <= 10: print("Підходяща довжина") ``` Це еквівалент ланцюгової форми: if 5 <= len(text) <= 10.

Швидкий довідник: рядкові умови

#
**Рядкові операції для умов** | Операція | Синтаксис | Повертає | |---|---|---| | Символ за індексом | `s[0]`, `s[-1]` | один символ | | Зріз підрядка | `s[1:4]` | підрядок | | Перевірка входження | `'x' in s` | `True` / `False` | | Починається з | `s.startswith('ab')` | `True` / `False` | | Закінчується на | `s.endswith('ab')` | `True` / `False` | | Довжина | `len(s)` | ціле число | **Корисні методи рядка в умовах** | Метод | Що робить | |---|---| | `s.lower()` | копія в нижньому регістрі — використовувати перед порівнянням | | `s.upper()` | копія у верхньому регістрі | | `s.strip()` | копія без пробілів на початку та в кінці | | `s.isdigit()` | `True` якщо всі символи — цифри | | `s.isalpha()` | `True` якщо всі символи — літери | | `s.isspace()` | `True` якщо тільки пробільні символи | **Ключові патерни** ```python # Завжди перевіряти довжину перед індексацією if len(s) > 0: # або: if s: print(s[0], s[-1]) # Порівняння без урахування регістру if s.lower() == 'yes': print('Підтверджено') # Перевірити обидва кінці if s.startswith('(') and s.endswith(')'): print('Обгорнуто в дужки') # Довжина в діапазоні if 5 <= len(s) <= 20: print('Коректна довжина') # Коротке замикання: захист за довжиною перед перевіркою вмісту if len(s) >= 2 and s[-1] == '!': print('Закінчується знаком оклику') ```
01

Перший і останній символ.

#

Користувач вводить рядок. Якщо довжина рядка більша за 10 символів — виведіть перший і останній символ, інакше — виведіть "Рядок занадто короткий".

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if len(text) > 10:
    print(text[0], text[-1])
else:
    print("Рядок занадто короткий")

# або так можна: зберегти символи у змінні
text = input("Введіть рядок: ")

if len(text) > 10:
    first = text[0]
    last = text[-1]
    print(first, last)
else:
    print("Рядок занадто короткий")
02

Рядок починається з A.

#

Користувач вводить рядок. Якщо рядок починається з літери "A" або "a" — виведіть "Починається з A", інакше — "Починається з іншої літери". Можна використовувати методи рядків.

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if text.startswith("A") or text.startswith("a"):
    print("Починається з A")
else:
    print("Починається з іншої літери")


# АБО
if text[0] == "A" or text[0] == "a":
    print("Починається з A")
else:
    print("Починається з іншої літери")


# АБО
if text[0].lower() == "a":
    print("Починається з A")
else:
    print("Починається з іншої літери")

У результаті цього виразу text[0] ми отримуємо новий об’єкт рядка, який
складається з 1 символу, а значить ми можемо застосовувати до нього методи.
03

Перші чотири символи.

#

Користувач вводить рядок. Якщо довжина рядка більша за 8 символів — виведіть перші 4 символи, інакше — виведіть увесь рядок.

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if len(text) > 8:
    print(text[:4])
else:
    print(text)

# або так можна: спочатку підготувати фрагмент
text = input("Введіть рядок: ")

if len(text) > 8:
    part = text[:4]
else:
    part = text

print(part)
04

Емоційне повідомлення.

#

Користувач вводить рядок. Якщо довжина рядка більша за 6 символів і останній символ — "!" — виведіть "Емоційне повідомлення", інакше — "Звичайне повідомлення".

text = input("Введіть повідомлення: ")

Рішення
text = input("Введіть повідомлення: ")

if len(text) > 6 and text[-1] == "!":
    print("Емоційне повідомлення")
else:
    print("Звичайне повідомлення")

# або так можна через метод endswith
text = input("Введіть повідомлення: ")

if len(text) > 6 and text.endswith("!"):
    print("Емоційне повідомлення")
else:
    print("Звичайне повідомлення")
05

Пошук спецсимволів.

#

Користувач вводить рядок. Якщо рядок містить символ "@" або символ "#" — виведіть "Спецсимвол знайдено", інакше — "Спецсимволів немає".

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if "@" in text or "#" in text:
    print("Спецсимвол знайдено")
else:
    print("Спецсимволів немає")

# або так можна: перевіряти символи по черзі
text = input("Введіть рядок: ")

if "@" in text:
    print("Спецсимвол знайдено")
elif "#" in text:
    print("Спецсимвол знайдено")
else:
    print("Спецсимволів немає")
06

Привітання за ім’ям та прізвищем.

#

Користувач вводить ім’я та прізвище. Якщо і ім’я, і прізвище не порожні — виведіть привітання у форматі: "Привіт, Ім’я Прізвище!" (використайте f-рядок), інакше — "Введіть коректні дані".

name = input("Введіть ім’я: ")
surname = input("Введіть прізвище: ")

Рішення
name = input("Введіть ім’я: ")
surname = input("Введіть прізвище: ")

if name and surname:
    print(f"Привіт, {name} {surname}!")
else:
    print("Введіть коректні дані")

# або без f-рядка, через склеювання рядків
name = input("Введіть ім’я: ")
surname = input("Введіть прізвище: ")

if name and surname:
    print("Привіт, " + name + " " + surname + "!")
else:
    print("Введіть коректні дані")
07

Зріз з 3-го по 8-й символ.

#

Користувач вводить рядок. Якщо довжина рядка більша за 10 символів — виведіть зріз рядка з 3-го символу (включно) по 8-й символ (включно), інакше — виведіть "Недостатньо символів".

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if len(text) > 10:
    print(text[2:8])
else:
    print("Недостатньо символів")
08

Перший і останній у повідомленні.

#

Користувач вводить рядок. Якщо рядок не порожній — виведіть повідомлення: "Перший символ: X, останній символ: Y" (використайте f-рядок), інакше — "Порожній рядок".

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if text:
    print(f"Перший символ: {text[0]}, останній символ: {text[-1]}")
else:
    print("Порожній рядок")

# або так можна: заздалегідь зберегти перший і останній символ
text = input("Введіть рядок: ")

if text:
    first = text[0]
    last = text[-1]
    print(f"Перший символ: {first}, останній символ: {last}")
else:
    print("Порожній рядок")
09

Відповідна довжина рядка.

#

Користувач вводить рядок. Якщо довжина рядка від 5 до 10 символів включно — виведіть "Відповідна довжина", інакше — "Невідповідна довжина".

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if 5 <= len(text) <= 10:
    print("Відповідна довжина")
else:
    print("Невідповідна довжина")

# другий варіант: те саме без ланцюжка порівнянь
text = input("Введіть рядок: ")

length = len(text)
if length >= 5 and length <= 10:
    print("Відповідна довжина")
else:
    print("Невідповідна довжина")
10

Схоже на Python.

#

Користувач вводить рядок. Якщо рядок починається з "Py" або закінчується на "on" — виведіть "Схоже на Python", інакше — "Не схоже на Python".

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if text.startswith("Py") or text.endswith("on"):
    print("Схоже на Python")
else:
    print("Не схоже на Python")

# або так можна, якщо не важливий регістр першої літери
text = input("Введіть рядок: ")

if text.lower().startswith("py") or text.endswith("on"):
    print("Схоже на Python")
else:
    print("Не схоже на Python")
11

Привіт або бувай.

#

"Привіт - Бувай програма" Якщо користувач введе: Привіт, привіт, прИвіт або ПРИВІТ - відповісти йому "І тобі привіт!" Якщо користувач введе: Бувай, БуВай, і тд - відповісти йому "Адіос!".

text = input("Введіть фразу: ")
Рішення
text = input("Введіть фразу: ")

if text.lower() == "привіт":
    print("І тобі привіт!")
elif text.lower() == "бувай":
    print("Адіос!")
else:
    print("Нє, я не розмовляю з незнайомими людьми! Адіос!")


# АБО більш передбачливо, щоб врахувати не чітку рівність, а входження:
if "привіт" in text.lower():
    print("І тобі привіт!")
elif "бувай" in text.lower():
    print("Адіос!")
else:
    print("Нє, я не розмовляю з незнайомими людьми! Адіос!")