Python · Синтаксис · Начальный уровень

Условные операторы 2

11 задач

Дополнительная практика по условным операторам в Python: проверки строк, длины текста, символов, срезов, методов строк, логических операторов 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("Не, я не разговариваю с незнакомыми людьми! Адьос!")