Уведомления

Группа в Telegram: @pythonsu

#1 Июль 10, 2019 22:27:35

Dyusha
Зарегистрирован: 2019-07-07
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с исключениями.

Всем привет. У меня есть проблема с исключениями в программе. У меня есть 3 переменных:

myphonenumber=input(“Введите номер телефона в формате +7XXXXXXXXXX”)
myphonenumber1=input(“Введите номер телефона в формате +7 XXX XXX-XX-XX”)
myphonenumber2=input(“Введите номер телефона в формате 7(XXX)XXX-XX-XX”)

Я написал вот такой код:

try:
myphonenumber=int(input(“Введите номер телефона в формате +7XXXXXXXXXX\n”))
except ValueError:
print(“”)
print(“Пожалуйста, введите корректный номер телефона.\nАдмин не несёт ответственности за вашу невнимательность!\n ”)
myphonenumber=int(input(“Введите номер телефона в формате +7XXXXXXXXXX\n”))
try:
myphonenumber1=int(input(“Введите номер телефона в формате +7 XXX XXX-XX-XX\n”))
except ValueError:
print(“”)
print(“Пожалуйста, введите корректный номер телефона.\nАдмин не несёт ответственности за вашу невнимательность!\n ”)
myphonenumber1=int(input(“Введите номер телефона в формате +7 XXX XXX-XX-XX\n”))
try:
myphonenumber2=int(input(“Введите номер телефона в формате 7(XXX)XXX-XX-XX\n”))
except ValueError:
print(“”)
print(“Пожалуйста, введите корректный номер телефона.\nАдмин не несёт ответственности за вашу невнимательность!\n ”)
myphonenumber2=int(input(“Введите номер телефона в формате 7(XXX)XXX-XX-XX\n”))

В итоге после ввода 3 переменной неправильной программу крашит

ValueError: invalid literal for int() with base 10: ''

Как сделать так, чтобы этого не было и как мне сделать через цикл так, чтобы программа выдавала о некорректном номере телефона, пока пользователь не введет его верно?

Офлайн

#2 Июль 10, 2019 23:40:40

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Проблема с исключениями.

Dyusha
как мне сделать через цикл так, чтобы программа выдавала о некорректном номере телефона, пока пользователь не введет его верно?
я бы вместо true:int(…)-excerpt использовал как минимум, regexp для проверки валидности, как это делается, гуглиться с полпинка. пример https://habr.com/ru/post/110731/
А общий принцип вот такой..
 while True:
   myphonenumber=input('Введите номер телефона в формате ....')
   if re.mach(myphonenumber, phonenumber_pattern):
        break
А вообще тут вопрос неоднозначный, есть мнение что номера телефонов вообще не нужно проверять на валидность, но это сильно зависит от того для чего они вам нужны.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 10, 2019 23:47:11)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version