[Curso de Python] Interação com o usuário - Parte 3
por
em 16-11-2009 às 11:05 (11207 Visualizações)
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:
Como disse, o raw_input retorna sempre uma strings, vamos ver agora como se dá a conversão:Código :>>> n1 = raw_input("Digite o primeiro numero: ") Digite o primeiro numero: 12 >>> print n1, type(n1) 12 <type 'str'> >>>
Pronto, agora temos um inteiro. Vamos ver como seria o código do programa para somar dois numeros:Código :>>> s1 = raw_input("Digite o primeiro numero: ") Digite o primeiro numero: 12 >>> n1 = int(s1) >>> print n1, type(n1) 12 <type 'int'> >>>
Exemplo de execução:Código :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()
Esse tipo de tratamento só tem um problema:Código :$ python soma.py Digite o primeiro numero:10 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:Código :$ python soma.py Digite o primeiro numero:10.5 Digite o segundo numero: 20 Resultado 10 + 20 = 30
Executando o programa teremos:Código :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()
Pronto, temos números com ponto flutuante! E o que acontece se tentarmos executar o programa informando argumentos inválidos? Vamos ver...Código :$ python soma.py Digite o primeiro numero: 10.5 Digite o segundo numero: 7.2 Resultado: 10.5 + 7.2 = 17.700000
Como vemos nosso programa está "protegido" dessas eventualidades!Código :$ 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]
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...
Comentários
+ Enviar Comentário