[Curso de Python] Interação com o usuário - Parte 3
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...
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)
Comentários
-
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.Posted 17-11-2009 at 00:41 by lord4rk
-
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...Posted 17-11-2009 at 06:27 by Magnun
-
Posted 27-11-2009 at 10:51 by ilsahec
Enviar um comentario
|

![Submit "[Curso de Python] Interação com o usuário - Parte 3" to Digg](images/misc/bookmarksite_digg.gif)
![Submit "[Curso de Python] Interação com o usuário - Parte 3" to del.icio.us](images/misc/bookmarksite_delicious.gif)
![Submit "[Curso de Python] Interação com o usuário - Parte 3" to StumbleUpon](images/misc/bookmarksite_stumbleupon.gif)
![Submit "[Curso de Python] Interação com o usuário - Parte 3" to Google](images/misc/bookmarksite_google.gif)






