Python. как исправить? нужна помощь. - Общение Python мододелов

Вопрос Python. как исправить? нужна помощь.

Регистрация
25 Ноя 2012
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Вот часть кода:

DH = []

for letter in entry_Tel_M.get():

if letter != " ":

DH.append(letter)

if entry_hire_date.get() != "":

if len(entry_Tel_M.get()) == 15 and DH[0] == '+' and DH[4] == '(' and DH[7] == ')' and all(DH.isdigit() for i in [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14]):

tel_M = "".join(DH)

else:

messagebox.showerror('Ошибка', 'Телефон некорректен')

add_employee_window.focus()

else:

tel_M = entry_Tel_M.get()

Тут проверяется, что длина телефонного номера равна 15 символам, первый символ равен '+', четвертый символ равен '(', седьмой символ равен ')' и все символы с индексами [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14] являются цифрами. Но, почему-то код не работает. Помогите исправить, пожалуйста.
 
Регистрация
30 Окт 2012
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Скорее всего, проблема связана с тем, что вводимые вами данные каким-то образом не учитываются кодом или не соответствуют предоставленным условиям.

Попробуйте добавить некоторые отладочные точки или выводы в код, чтобы найти любое расхождение. Примерно так: DH = []
for letter in entry_Tel_M.get():
if letter != " ":
DH.append(letter)

print(f"DH content check: {DH}") # debugging point

if entry_hire_date.get() != "":
if len(entry_Tel_M.get()) == 15 and DH[0] == '+' and DH[4] == '(' and DH[7] == ')' and all(DH.isdigit() for i in [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14]):
tel_M = "".join(DH)
else:
messagebox.showerror('Ошибка', 'Телефон некорректен')
add_employee_window.focus()
else:
tel_M = entry_Tel_M.get()
Проверьте, соответствуют ли состояние и содержимое списка DH ожидаемым. Если нет, это может указывать на проблему.
 
Регистрация
12 Ноя 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Проблема в коде заключается в неправильном использовании списка `DH` для проверки условия. В данном коде, список `DH` заполняется только в случае, если введенный номер телефона не содержит пробелов. Однако, при проверке условия на соответствие требованиям номера телефона, используется список `DH`, без проверки на его заполненность. Это может привести к ошибкам, если список `DH` остается пустым из-за наличия пробелов во введенном номере.
Вот исправленный код, где список `DH` заполняется всегда, а затем проверяется его соответствие требованиям номера телефона:
```python
DH = []
for letter in entry_Tel_M.get():
if letter != " ":
DH.append(letter)
if entry_hire_date.get() != "":
if len(entry_Tel_M.get()) == 15 and DH and DH[0] == '+' and DH[4] == '(' and DH[7] == ')' and all(DH.isdigit() for i in [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14]):
tel_M = "".join(DH)
else:
messagebox.showerror('Ошибка', 'Телефон некорректен')
add_employee_window.focus()
else:
tel_M = entry_Tel_M.get()
```
В этом исправленном коде, добавлена проверка `DH`, чтобы убедиться, что список не пустой перед проверкой условия на соответствие требованиям номера телефона. Теперь код должен работать корректно.
Но это +- , отпишешь если не будет работать.
 

ger

Capitan

ger

Capitan
Регистрация
24 Дек 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
import re

s = "+7(123)456-78-90"

print (re.match(r"^\+7\([\d]{3}\)[\d]{3}-[\d]{2}-[\d]{2}$", s) is not None)
 

One

Capitan

One

Capitan
Регистрация
16 Ноя 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Ты уверен, что правильно указал индексы символов? Номер, соответствующий описанию, выглядит очень странно: +000(00)0000000
 
Сверху Снизу