Listagem 12-03: Reconhecendo o número do telefone

##############################################################################
# Parte do livro Introdução à Programação com Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Quarta Edição - Março/2024 - ISBN 978-85-7522-886-9
#
# Site: https://python.nilo.pro.br/
#
# Arquivo: capítulo 12/12.03 - Reconhecendo o número do telefone.py
##############################################################################
entrada = "Compre por R$50,72. Ligue já (92)5431-2201 antes de 10/12/2033."
Saída = []
telefone = []
def número(entrada, qmin, qmax):
    num = 0
    for caractere in entrada:
        if caractere.isnumeric():
            num += 1
        else:
            break
    if qmin <= num <= qmax:
        return True, 0, num  1
    return False, -1, -1
def ddd(entrada):
    estado = posição = 0
    código_ddd = []
    while posição < len(entrada):
        caractere = entrada[posição]
        if estado == 0 and caractere == "(":
            estado = 1
            código_ddd.append(caractere)
        elif estado == 1:
            achou, início, fim = número(entrada[posição:], 2, 3)
            if achou:
                código_ddd.append(entrada[posição + início : posição + fim + 1])
                estado = 2
                posição += fim
            else:
                break
        elif estado == 2:
            if caractere == ")":
                return True, 0, posição
            break
        else:
            break
        posição += 1
    return False, -1, -1
for posição in range(len(entrada)):
    achou, início, fim = ddd(entrada[posição:])
    if achou:
        print(f"DDD encontrado nas posições: {posição+início} a {posição+fim}")
        print(entrada[posição + início : posição + fim + 1])
Clique aqui para baixar o arquivo