Celulares tecnologia assuntos variados PontoABC já

Introdução ao python 4

Exemplos, Entrada e saida basica de dados.

4) Exemplos, Entrada e saida basica

Agora, iremos introduzir alguns exemplos que irão ilustrar e tirar algumas dúvidas
tão bem quanto dar um feeling doque é o python . E iremos falar sobre
entrada e saida basica no python .

Exemplo 1

>>> print('Hello world')
Hello world
>>> data = raw_input('Qual é seu nome?')
Qual é seu nome?Yuri.
>>> data
'Yuri.'
>>>


Neste exemplo estamos fazendo usando das duas funções principais e mais basicas
do python para entrada e saida de dados simples, mais a frente irei ensinar com arquivos.

Exemplo 2



>>> n = raw_input('Numero:')
Numero:10 ** 2
>>>
>>> n
'10 ** 2'
>>> type(n)

>>>


Este é um exemplo interessante, veja que o meu intento era simplesmente
propor o usuario que inserisse um numero, este por sua vez o introduziria e eu então
usaria o valor somando-o a 10 e mostrando novamente o resultado. No entanto, embora o usuario
tenha introduzido 10 ** 2 o dado retornado não é do tipo int e sim do tipo str.
Isto acontece porque a entrada é feita usando strings, para aproveitarmos o dado
como sendo numero teremos de usar o constructor da class int. Isto é, teremos de fazer
um cast no valor retornado por raw_input. O esquema segue abaixo.


>>> data = raw_input('Numero:')
Numero:121 ** 3
>>> n = int(data)
Traceback (most recent call last):
File input, line 1, in
ValueError: invalid literal for int() with base 10: '121 ** 3'
>>>


Agora veja que interessante, embora tenhamos inserido o numero 123 ** 3 que de fato
é um numero nos simplesmente conseguimos uma exception quando tentamos transforma-lo em um inteiro mais a frente irei explicar como contornar isto vamos então ver como ele reagiria
se tivessemos apenas introduzido um numero qualquer na mais simples forma.


>>> data = raw_input('Insira um numero na forma 11223 1212 etc\nNumero:')
Insira um numero na forma 11223 1212 etc
Numero:2102
>>> n = int(data)
>>> type(n)

>>> n
2102
>>> print('A soma de %s com 10 é:%s' % (n, n + 10))
A soma de 2102 com 10 é:2112
>>>



Finalmente obtemos o resultado desejado.

Voltando o problema de inserindo numeros em um formato mais compacto poderiamos ter
contornado o problema usando uma das funções built-ins do python que serve para
avaliar codigo em string em tempo real, isto é a função eval.

A sintax da função eval é.

eval(source[, globals[, locals]]) -> value


Não se preocupe com os argumentos globals, irei explica-los mais a frente, eles são
opcionais.
A função eval recebe raw code e então avalia o codigo e retorna o resultado.
Vamos dar uma olhada em alguns exemplos antes de resolver o problema acima.


>>> eval('1+1')
2
>>> eval('100 ** 3')
1000000
>>>


Agora que temos uma idéia de como o eval funciona vamos usa-lo para resolver o problema acima.


>>> data = raw_input('Numero:')
Numero:100 ** 23
>>> data
'100 ** 23'
>>> n = eval(data)
>>> n
10000000000000000000000000000000000000000000000L
>>> type(n)

>>> print('A soma de %s com 32 é:%s' % (data, n+32))
A soma de 100 ** 23 com 32 é:10000000000000000000000000000000000000000000032
>>>


É interessante ressaltar que poderiamos ter contornado este problema com a função input
no entanto em algumas situações não é interessante usarmos input assim teriamos de usar realmente raw_input. Segue abaixo o exemplo com o input.


>>> n = input('Numero:')
Numero:10**100
>>> n
10000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000L
>>> type(n)



Parece mais simples não? É de fato, é, mas a função input ela automaticamente chama
eval em cima do dado. Se por algum motivo queremos receber diferentes tipos de dado
e também numeros, teriamos de usar raw_input e chamar eval sobre o dado dependendo de algum
criterio qualquer.

Veja um exemplo abaixo.


Numero:23232A
Traceback (most recent call last):
File input, line 1, in
File "", line 1
23232A
^
SyntaxError: unexpected EOF while parsing



Veja que o python lançou uma exeception devido ao fato de que 23232A não pode ser
analisado. No entanto aquele numero pode significar um numero em hexa decimal por exemplo.

0 comentários:

Postar um comentário

Faça o seu comentário e nos siga no Twitter