+ 2

Проверка телефонных номеров. (Checking phone numbers)

Девятая задача по python(The ninth python task). Прохожу 4 из 5 тестов(I pass 4 out of 5 tests). Что делать?(What to do?) Вот код(Here is the code): import re str = input() pattern = r"\A(1|8|9)[0-9]+" match = re.match(pattern, str) if match: print("Valid") else: print("Invalid") Проблема решена(The problem has been resolved). Поскольку длина телефонного номера известна, код будет так(Since the length of the phone number is known, the code will look like this): import re str = input() pattern = r"\A(1|8|9)[0-9]+" if len(str)==8: match = re.match(pattern, str) if match: print("Valid") else: print("Invalid") else: print("Invalid")

19th Nov 2020, 12:08 PM
Muxtorov Javohir
8 Answers
+ 3
Алексей, не учитывается, что в строке может быть что-то ещё после паттерна. Добавить символы начала и конца строки - и всё работает.
30th Mar 2021, 3:27 AM
Vasiliy Kulibaba
+ 1
Не пойму почему закрытые тесты не проходят. Открытые проходят а закрытые нет. Проверку длинны номера вроде тоже поставил. Вот код : import re pattern = input() if re.match("1",pattern[0] ) or re.match( "8", pattern[0] ) or re.match("9",pattern[0]) and len(pattern)==8: print("Valide") else : print ("Invalide")
25th Nov 2020, 2:00 AM
Муслим Биногеров
Муслим Биногеров - avatar
+ 1
Как по мне это решение очень короткое и совпадает всему тому чему учит приложение, зачем проверять длину если можно просто один символ из этих взять и 7 символов цифр? Скрытые тесты может не пройти из за наличия там букв например pattern = r"[189]([0-9]{7}$)" if re.match(pattern,input()): print("Valid") else: print("Invalid")
1st Oct 2022, 5:03 PM
Arevik Khachatryan
0
Муслим Биногеров тут нужно использовать "сырые" строки формирования. То есть не "8" а r"8"
25th Nov 2020, 2:21 AM
Muxtorov Javohir
0
Спасибо большое, понял.
25th Nov 2020, 2:28 AM
Муслим Биногеров
Муслим Биногеров - avatar
0
В чем проблема, понять не могу: a = str(input()) b = r"(1|8|9){1}[0-9]{7}" if re.match(b, a): print("Valid") else: print("Invalid")
6th Jan 2021, 10:18 AM
Алексей
0
У меня вот так получилось, громоздко, но все скрытые задания были пройдены. Я сначала по размеру сортировал а потом уже по начальной цифре. Вот код : import re pattern = input() if len(pattern)==8: if re.match("1",pattern[0] ) or re.match( "8", pattern[0] ) or re.match("9",pattern[0]): print("Valid") else : print ("Invalid") else: print ("Invalid")
18th Apr 2021, 5:53 AM
Андрей Манштейн
Андрей Манштейн - avatar
0
# Я решил так import re #введите код сюда inpt = input() pattern = r"[1,8,9](\d{7}$)" if re.search(pattern, inpt): print("Valid") else: print("Invalid")
24th Sep 2021, 9:14 AM
Тимур Завьялов
Тимур Завьялов - avatar