Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 6, 2018 21:57:51

saveleva2003
Зарегистрирован: 2018-10-06
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Исключения. Методы try...except

Помогите, пожалуйста, разобраться с исключениями на примере этой задачи, без исключений решила, но с ними не понимаю, как.

Напишите программу, проверяющую корректность введенного номера сотового телефона в РФ по следующим критериям:
Номер может начинаться как с +7, так и с 8
Допускается любое количество любых пробельных символов в любом месте, например, +7 905 3434 341.
Допускается наличие в любом месте одной пары скобок (обязательно пары), например: 8 (905) 3434 341.
Допускается наличие любого количества знаков -, только не подряд (–), не в начале и не в конце. Например, +7 905-34-34-341.
Если введенный номер корректен, он преобразуется к формату +79053434341. То есть 8 заменяется на +7, а все другие символы-НЕцифры убираются. В итоговой записи остается 11 цифр.
Если же номер не удовлетворяет перечисленным условиям, выводится слово error.

Пример 1
Ввод
+7(902)123-4567
Вывод
+79021234567
Пример 2
Ввод
8(902)1-2-3-45-67
Вывод
+79021234567
Пример 3
Ввод
504))635(22))9 9
Вывод
error
Пример 4
Ввод
8–9019876543-22-3–4
Вывод
error

Ниже прикреплено мое решение без исключений.

Прикреплённый файлы:
attachment main (16).py (1,4 KБ)

Офлайн

#2 Окт. 7, 2018 14:31:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9854
Репутация: +  853  -
Профиль   Отправить e-mail  

Исключения. Методы try...except

saveleva2003
без исключений решила
saveleva2003
Допускается наличие в любом месте одной пары скобок
Вот такие номера пропускает твой код
+7(902)75(123)45
+7()9027512345
И такие номера пропускает
+79027512345x
+790275++12345+++
Так что не всё так прекрасно в королевстве датском.

Оператор try … except работает в паре с оператором raise.
  
>>> try:
...   if 1 < 2:
...     raise ValueError
...   else:
...     print('ok')
... except ValueError:
...   print('fail')
... 
fail
>>>



Отредактировано py.user.next (Окт. 7, 2018 14:32:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version