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

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

[ Hits: 8.040 ]

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

Gerador de palpites para Mega Sena (com módulo random)

Bubble Sort em Python

Teste de Escolha Aleatória

Desenhando um quadrado em python, com funções.

Um novo hello World, com checkbox


  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts