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

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

[ Hits: 14.500 ]

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

Jogo da velha

Horá do descanso! Uma peque aplicação que fiz usando pygtk

Positivo ou negativo

Calculo da area de um triangulo (introdutório)

Janela Basica em Python


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts