@eellazy

Имеет ли право такой код на жизнь?

Добрый день! Никак не могу правильно написать проверки для переменной. конструкция if не останавливает функции после успеха или не успеха. Сделал через while. Имеет ли право на жизнь такой код?
phone = message.text

				if phone.isdigit() is True:
					if len(phone) >= 9 and len(phone) <= 12:

						if phone[0:2] == '00':
							phone = phone[2:]

						if phone[0] == '9':
							phone = '0' + phone

						if phone[0] == '0':
							phone = '421' + phone[1:]

						msg = bot.send_message(message.chat.id, 'Пошук...')
						bot.clear_step_handler_by_chat_id(message.chat.id)
						searchPhoneSk(message, phone)
					else:
						msg = bot.reply_to(message, 'Некоректний номер телефону')
						bot.register_next_step_handler(msg, checkPhoneSk)
				else:
					massage_string = True
					while massage_string is True:

						if message.text == ' Новий пошук':
							bot.clear_step_handler_by_chat_id(message.chat.id)
							welcome(message)
							break

						elif message.text == ' На головну"':
							bot.clear_step_handler_by_chat_id(message.chat.id)
							welcome(message)
							break
						else:
							msg = bot.reply_to(message, 'Номер повинен складитись тільки з чисел')
							bot.register_next_step_handler(msg, checkPhoneSk)
							massage_string = False
  • Вопрос задан
  • 240 просмотров
Решения вопроса 2
DevMan
@DevMan
если живёт и делает что нужно - однозначно имеет.
если нет: на нет и суда нет.
Ответ написан
Комментировать
shabelski89
@shabelski89
engineer
Много бреда написано. Например проверка на корректность телефона, явно не все случаи проверены и плюс пересечение условия 1 и 3. Замените на функцию
def IsCorrect(number):
    if number.isdigit() and (len(number) >= 9 and len(number) <= 12):
        if number[:2] != '00' and number[0] == '0':
            rNumber = '421' + number[1:]
        elif number[0] == '9':
            rNumber = '0' + number
        else:
            rNumber = number[2:]
        return rNumber
    else:
        return False

зачем делать так
massage_string = True
          while massage_string is True

если можно просто While True, а потом уж где надо break для выхода.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы