DamiRocK

Python: предикат is_international_phone() и первая позиция строки

Проверяем, начинается ли учебная строка телефона с плюса. Предикат возвращает bool; отдельно разбираем пустой ввод и отсутствие полной валидации номера.

Функция-вопрос

Предикат — функция, возвращающая логический ответ на конкретное условие. Имена вроде 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. Условие сохранено; пустой ввод и предел проверки выделены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.