Функция-вопрос
Предикат — функция, возвращающая логический ответ на конкретное условие. Имена вроде is_even или has_at_symbol помогают читать вызов как вопрос. Они не создают особый вид функции в синтаксисе языка: результат bool получается из её реализации.
Задание источника
Определите, начинается ли переданная строка номера с символа плюс:
def is_international_phone(phone: str) -> bool:
return phone[0] == "+"
Для "+79991234567" результат True, для "89991234567" — False. Эти значения используются как учебные строки, не проверяются по телефонной сети.
Граница минимального решения
Исходный вариант обращается к позиции 0 и предполагает непустую строку. Для пустого ввода будет IndexError. Более общий вариант, сохраняющий смысл проверки префикса и возвращающий False для пустой строки:
def is_international_phone(phone: str) -> bool:
return phone.startswith("+")
Это редакционное расширение явно отделено от минимального решения по индексу.
Плюс не доказывает действительность номера
Строки "+" и "+abc" также пройдут такую проверку. Функция не анализирует код страны, длину, допустимые цифры или существование абонента. Название учебного предиката нужно читать в рамках его конкретного условия, а не как обещание полноценной международной валидации.
Самопроверка результата
Возвращается именно True или False, а не печатное сообщение. Благодаря этому предикат можно использовать внутри if или логического выражения. Вывод на экран при необходимости выполняется отдельно вызывающим кодом.
Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Условие сохранено; пустой ввод и предел проверки выделены.