Inicio Fóruns Wiki Videos Galeria Comunidades Empregos FAQ Termos de Uso Contato Sobre Twitter Facebook Linkedin
Registre-se Grupos Sociais Blogs Calendário Marcar Fóruns Como Lidos
Voltar   Under-Linux.org > Blogs > root@blog:/# chmod o+r *
Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Avalie este Artigo

[Curso de Python] Interação com o usuário - Parte 3

Submit "[Curso de Python] Interação com o usuário - Parte 3" to Digg Submit "[Curso de Python] Interação com o usuário - Parte 3" to del.icio.us Submit "[Curso de Python] Interação com o usuário - Parte 3" to StumbleUpon Submit "[Curso de Python] Interação com o usuário - Parte 3" to Google
Posted 16-11-2009 at 10:05 by Magnun

Antes de prosseguir leia os artigos anteriores aqui



No post anterior eu falei que usar a função input não é lá muito seguro, porém a função raw_input retorna somente strings, como resolver esse problema??

Interação com o usuário



A solução para nosso impasse é aprender a converter strings para outros valores. Vamos logo com isso então...

Vamos primeiro fazer o seguinte teste:


>>> n1 = raw_input("Digite o primeiro numero: ")
Digite o primeiro numero: 12
>>> print n1, type(n1)
12 <type 'str'>
>>>



Como disse, o raw_input retorna sempre uma strings, vamos ver agora como se dá a conversão:


>>> s1 = raw_input("Digite o primeiro numero: ")
Digite o primeiro numero: 12
>>> n1 = int(s1)
>>> print n1, type(n1)
12 <type 'int'>
>>>



Pronto, agora temos um inteiro. Vamos ver como seria o código do programa para somar dois numeros:


s1 = raw_input("Digite o primeiro numero: ")
s2 = raw_input("Digite o segundo numero: ")
soma = int(s1) + int(s2)
print 'Resultado: %(s1)s + %(s2)s = %(soma)d'%locals()



Exemplo de execução:


$ python soma.py
Digite o primeiro numero:10
Digite o segundo numero: 20
Resultado 10 + 20 = 30



Esse tipo de tratamento só tem um problema:


$ python soma.py
Digite o primeiro numero:10.5
Digite o segundo numero: 20
Resultado 10 + 20 = 30



Como nós especificamos que queremos inteiros (int) ele descarta a parte fracionária. O que podemos fazer é converter para ponto flutuante (float), o programa ficaria assim:


s1 = raw_input("Digite o primeiro numero: ")
s2 = raw_input("Digite o segundo numero: ")
soma = float(s1) + float(s2)
print 'Resultado: %(s1)s + %(s2)s = %(soma)f'%locals()



Executando o programa teremos:


$ python soma.py
Digite o primeiro numero: 10.5
Digite o segundo numero: 7.2
Resultado: 10.5 + 7.2 = 17.700000



Pronto, temos números com ponto flutuante! E o que acontece se tentarmos executar o programa informando argumentos inválidos? Vamos ver...


$ python soma.py
Digite o primeiro numero: teste
Digite o segundo numero: 12
Traceback (most recent call last):
File "soma.py", line 3, in <module>
soma = float(s1) + float(s2)
ValueError: invalid literal for float(): teste

$ python soma.py
Digite o primeiro numero: [1,2, 3]
Digite o segundo numero: 12
Traceback (most recent call last):
File "soma.py", line 3, in <module>
soma = float(s1) + float(s2)
ValueError: invalid literal for float(): [1,2, 3]


Como vemos nosso programa está "protegido" dessas eventualidades!


Desafio
Pra quem ainda acompanha isso, deixo um outro desafio, fazer um programa que calcula a divisão de dois números e imprime o seu resultado. Lembrando, testem o programa com diversas entradas. Tem um pequeno detalhe nesse programa que vocês vão precisar resolver. No próximo post vou falar sobre isso.

Até mais...

Magnun Leno
CISCO CCNA: CSCO10991731
e-mail: magnunΘunder-linux.org
Blog: root@blog:/# chmod o+r *
Participe de uma comunidade!
"If you choose not to decide, you still have made a choice."
- Freewill (Rush)
Visitas 339 Comentários 3 Editar Tags Email Blog Entry
Total Comments 3

Comentários

  1. Old Comment
    Avatar de lord4rk
    A poucos dias achei os seus post's e achei muito bom, me ajudou muito com aprendizagem!!
    Por favor continue postando sobre python!!

    try:
    ... n1 = int(raw_input('Digite o primeiro numero: '))
    ... n2 = int(raw_input('Digite o segundo numero: '))
    ... resultado = n1 / n2
    ... print '%i / %i = %i' % (n1, n2, resultado)
    except:
    .... "Erro"


    []'s
    Jr.
    Comment with Quote permalink
    Posted 17-11-2009 at 00:41 by lord4rk lord4rk está offline
  2. Old Comment
    Avatar de Magnun
    Olá Lord4rk!!

    Muito boa a sua solução! Vejo que já conhece um pouco sobre Python pois fez uso da instrução try/except! Espero que você comente mais vezes por aqui! Vou continuar postando sim, não só nesse curso mas também sobre assuntos mais avançados (talvez esses venham a te interessar mais).

    Esse curso de Python que estou fazendo será de longa duração pois pretendo abordar desde o básico à orientação à objetos, criação de interfaces gráficas e estruturação de projetos python incluindo a hospedagem do projeto em sites como googlecode e launchpad.

    Se precisar de ajuda em algum projeto ou estiver disposto a colaborar, meus contatos estão acima! Até mais...
    Comment with Quote permalink
    Posted 17-11-2009 at 06:27 by Magnun Magnun está offline
  3. Old Comment
    Avatar de ilsahec
    muito bom
    Comment with Quote permalink
    Posted 27-11-2009 at 10:51 by ilsahec ilsahec está offline
Enviar um comentario Enviar um comentario

Horários baseados na GMT -3. Agora são 10:57.


Powered by vBulletin®
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.