Formatando número de telefone celular (usando .format)

Publicado por Marcio Luís (última atualização em 28/03/2014)

[ Hits: 9.423 ]

Download formataCelular.py




Um exemplo de como formatar um número de telefone celular que foi digitado sem formatação. Exemplo: você digita 12345678901 e o programa exibe (12) 3-4567-8901. Lembrando que em SP os celulares ganharam mais um dígito, nesse exemplo é o "3".

Neste script também é feita a verificação do que foi digitado. Se for digitado uma letra, quando o comando "numeroCelular = int(numeroCelular)" for executado irá gerar um ValueError, o que fará o except entrar em "ação".

Qualquer crítica/sugestão é bem-vinda. Obrigado!

  



Esconder código-fonte

#!/usr/bin/env python3
#-*- coding: utf-8 -*-
#Exemplo de como formatar um número de celular usando .format()
#- Marcio Luís Siqueira - 26/03/2014


numeroCelular = input('Digite o número do Telefone Celular: ' )

try:
    if len(numeroCelular) != 11:
        raise ValueError
    else:
        numeroCelular = int(numeroCelular)# se contiver letras causa um ValueError
        numeroCelular = str(numeroCelular)
        celular = numeroCelular
        telFormatado = '({}) {}-{}-{}'.format(celular[0:2],
                            celular[2] ,celular[3:7], celular[7:])
        print(telFormatado)

except ValueError:
    if len(numeroCelular) == 0:
        print('Você não digitou o número')
    else:
        print('Número inválido, o número precisa ter 11 números inteiros')

Scripts recomendados

Cifra de César com lista

Calculadora científica (wip)

Calcular a data do Carnaval e da Páscoa

Estrutura de repetição for e while

soletra.py


  

Comentários
[1] Comentário enviado por taq em 29/03/2014 - 13:37h

Use expressões regulares para fazer isso. Vou colocar um exemplo aqui em Ruby, que leva em conta tanto com o dígito extra ou não:

# encoding: utf-8

STDOUT.puts "Digite o número do celular: "

tokens = /^(\d{2})(\d?)(\d{4})(\d{4})$/.match(gets.chomp)[1..-1].select {|t| !t.empty?} rescue nil
if !tokens
STDERR.puts "Número inválido!"
exit 1
end
STDOUT.puts "Número formatado: (#{tokens[0]}) #{tokens[1..-1].join('-')}"

Para mais informações sobre Ruby, consulte o meu ebook (é gratuito): https://leanpub.com/conhecendo-ruby
Para mais informações sobre expressões regulares, consulte o guia do Aurélio "Verde": http://aurelio.net/regex/guia/

Happy hacking! :-)

[2] Comentário enviado por msiqueira553 em 29/03/2014 - 20:48h


[1] Comentário enviado por taq em 29/03/2014 - 13:37h:

Use expressões regulares para fazer isso. Vou colocar um exemplo aqui em Ruby, que leva em conta tanto com o dígito extra ou não:

# encoding: utf-8

STDOUT.puts "Digite o número do celular: "

tokens = /^(\d{2})(\d?)(\d{4})(\d{4})$/.match(gets.chomp)[1..-1].select {|t| !t.empty?} rescue nil
if !tokens
STDERR.puts "Número inválido!"
exit 1
end
STDOUT.puts "Número formatado: (#{tokens[0]}) #{tokens[1..-1].join('-')}"

Para mais informações sobre Ruby, consulte o meu ebook (é gratuito): https://leanpub.com/conhecendo-ruby
Para mais informações sobre expressões regulares, consulte o guia do Aurélio "Verde": http://aurelio.net/regex/guia/

Happy hacking! :-)


Obrigado pela sugestão! Neste exemplo usei o método str.format() especialmente para ilustrar como se pode usar-lo,Também dei uma pequena amostra de como tratar erros, e mesmo "criar" erros usando "raise".
No Python, pelo pouco que sei, expressões regulares são um pouco diferentes de Ruby, e ainda não cheguei lá, tenho só u mês de auto-didata em Python.
Sobre expressões regulares em Python:

http://turing.com.br/material/regex/python_re.html

Obrigado pelos link's, depois irei ler-los com esmero, sou curioso sobre Ruby :p

Abraço!


Contribuir com comentário