Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Python Interativo

Avaliação: 2 votos, 5,00 média.

Antes de prosseguir leia os artigos anteriores aqui



Olá pessoal!!

Recebi mais comentários que eu esperava nessas postagens sobre Python. Geralmente o assunto de desenvolvimento aqui não Under-Linux não dá muito Ibope! Mas vamos tentar mudar isso...


Python Interativo



Uma coisa que ajuda muita a aprender Python é a console interativa. Para acessar a console interativa do Python basta abrir um terminal e digitar Python.

No Windows a seguinte mensagem irá aparecer:
Código :
C:\>python 
 Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
 >>>
No Linux a seguinte mensagem irá aparecer:
Código :
$ python 
 Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)  
 [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 
 Type "help", "copyright", "credits" or "license" for more information.  
 >>>
No Windows existe também a console interativa do IDLE. Para acessá-la basta iniciar o IDLE em Iniciar->Programas->Python 2.6->IDLE (Python GUI). Geralmente o IDLE inicia 2 janelas: Um arquivo em branco e a console interativa. Caso a console não apareça basta ir no menu Run->Python Shell. O Shell interativo do IDLE tem a seguinte aparência:


Dentre todos (IDLE, Shell Windows e Shell Linux) sem dúvida eu prefiro o Shell do Linux. Não estou puxando saco do Linux não. O simples fado de você poder fazer isso no shell do Linux já é muito bom! O Shell do Windows não dá suporte a certas ações. Existe outra console interativa para Python chamada IPython que tem várias funções. Como ela é desenvolvida em Python ela roda também no Windows, mas perte metade de suas funções por causa da precariedade do terminal Windows. Vamos continuar, vou falar do IPython mais pra frente.

Como vocês viram, a console interativa do Python usa como início do cursor três sinais de "maior que": >>>. Então, daqui por diante, quando eu postar alguma coisa começada com >>> saibam que não é pra digitar o >>>, só estou indicando que essa é uma saída da console interativa.


Operações básicas com números

Vamos a um exemplo bem complexo de como utilizar a console interativa do Python como calculadora:
Código :
>>> 1+1 # Exemplo difícil
2
>>>
Estou brincando, isso é só pra demonstrar algumas coisas em Python.

  1. Os comentários são feitos através de #. Tudo que vem depois de # até o final da linha não é interpretado.
  2. Se esse mesmo código for colocado em um arquivo e executado, não será exibido a saída (2). No console interativo toda "saída" que não é "direcionada" para uma variável é ecoada no terminal, por isso o 2 é mostrado.


Entendido isso vamos a alguns exemplos de soma e subtração.

Soma e subtração
Código :
>>> 2 + 3  # Soma comum
5
>>> 2.5 + 4  # Soma com ponto flutuante
6.5
>>> -2 + 4  # Soma com número negativo à esquerda
2
>>> 3 + -7  # Soma com número negativo à direita
-4
>>> 4 - 2  # Subtração comum
2
>>> 4 - 8  # Subtração comum resultado negativo
-4
>>> 2.5 - 7  # Subtração com ponto flutuante
-4.5
>>> -2 - 3  # Subtração com número negativo à esquerda
-5
>>> 4 - -4  # Subtração com número negativo à direita
8
>>>
Até aqui tudo normal, nenhum segredo e nada complicado.

Multiplicação
Código :
>>> 2 * 2  # Multiplicação comum
4
>>> 2 * -1  # Multiplicação com numero negativo à direita
-2
>>> -4 * 2  # Multiplicação com numero negativo à esquerda
-8
>>> 2 * 1.5  # Multiplicação com ponto flutuante
3.0
>>>
Novamente nenhuma novidade. Vamos para algo mais interessante...


Divisão
Código :
>>> 4 / 2  # Divisão comum
2
>>> 6 / -2  # Divisão com numero negativo à direita
-3
>>> -10 / 5  # Divisão com numero negativo à esquerda
-2
>>> 5 / 2  # Divisão não exata com inteiros
2
>>> -5 / 2  # Divisão não exata com inteiros sendo um negativo
-3
>>> 5 / 2.0  # Divisão não exata com ponto flutuante à direita
2.5
>>> 5.0 / 2  # Divisão não exata com ponto flutuante à esquerda
2.5
>>> 5.0 // 2 # Divisão com aproximação
2.0
>>> 5.0 // -2 # Divisão com aproximação
-3.0
>>>
Ok, aqui temos algumas coisas interessantes:

  • Primeiro caso interessante é a divisão entre 5 e 2 que deveria dar 2.5, mas retorna somente 2. Como os dois números (5 e 2) são inteiros, o Python acha que você quer a resposta inteira, logo ele pega o resultado (2.5) e "arredonda para baixo" (2);
  • O segundo caso é a mesma divisão, porem com um número negativo, que retorna -3. Como eu disse, o resultado da divisão é "arredondada para baixo", ou seja, para o menor número, e a matemática diz que -2 é maior que -3, logo não tem discussão, -2.5 é arredondado para -3;
  • O terceiro caso, mostra a resolução do problema da divisão entre 5 e 2. Para obter o resultado em ponto flutuante basta utilizar um dos operandos como ponto flutuante;
  • O quarto caso são as duas últimas divisões que utilizam o operador //, que retorna o resultado da divisão em ponto flutuante porém "arredondada para baixo".


Potênciação
Código :
>>> 2**2  # Potênciação comum
4
>>> 2**4  # Potênciação comum
16
>>> -2**2  # Potênciação incorreta com número negativo
-4
>>> -2**3  # Potênciação incorreta com número negativo
-8
>>>
>>> (-2)**2  # Potênciação correta com número negativo
4
>>> (-2)**3  # Potênciação correta com número negativo
-8
>>> pow(2,2)  # Potênciação usando uma função
4
>>> pow(2,3)  # Potênciação usando uma função
8
>>> pow(-2,2)  # Potênciação usando uma função
4
>>> pow(-2,3)  # Potênciação usando uma função
-8
>>>
Aqui temos a demonstração de como realizar a potênciação no Python através do operador ** e da função buit in pow. Ao realizar a potênciação com uma base negativa e o operador ** temos que tomar cuidado. No exemplo acima temos um caso típico de erro, quando digitamos -2**2 o Python utiliza a prioridade dos operadores e avalia a expressão da seguinte forma: -(2**2). Isso ocorre pois o operador de potência tem precedência sobre o operador negativo (-). Para resolver isso utilizamos o parêntese para enfatisar que o - deve atuar sobre o 2 antes da realização da potência: (-2)**2.

Abaixo uma lista de prioridades de operadores:

  1. Potência: **;
  2. Multiplicação e divisão: *, /, // e %;
  3. Soma e subtração: + e -;



Expressões

Já que entramos no mérito dos parênteses vamos ver um pouco algumas expressões em Python e coisas que devemos tomar cuidado:
Código :
>>> (3+5)/2*2 # *2 Será feito após a divisão
8
>>> (3+5)/(2*2) # Agora sim será feito antes
2
>>> (1/2)*2  # Zero?!? Como isso vai dar zero??
0
>>> (1/2.0)*2 # Ah, agora entendi!
1.0
>>> ((5+10)/3)**2  # Vários parênteses
25
>>>
Uma dúvida que deve surgir é:

Em (3+5)/2*2 os operadores / e * possuem a mesma prioridade, qual deve será executado primeiro?

A divisão será executada primeiro. Quando os operadores tem a mesma prioridade é executado como se lê, ou seja, da esquerda para a direita. Vale ressaltar que só devemos utilizar parênteses para agrupar operações, as chaves e colchetes e chaves são reservados para outras coisas.



Fechamento



É isso ai pessoal. Ainda estamos bem no começo e não tem muita coisa interessante, mas já vi alguns projetos escorregando em conceitos que mostrei aqui. Um bom exemplo foi o bug que eu encontrei no cairoplot. O programa enrava em um loop infinito por causa de uma divisão que sempre retornava zero, quando deveria retornar um número com ponto flutuante.

Então prestem muita atenção, nada é trivial a ponto de não merecer atenção!

Até mais...

Atualizado 01-09-2010 em 09:04 por Magnun

Categorias
Python , Artigos , Artigos , Cursos , Curso de Python

Comentários

  1. Avatar de Blog do Taborda
    Está sendo muito bom o seu curso Magnun, parabéns, estou acompanhando.

    Eu já queria estudar Python, porem como não me sobra muito tempo, fica complicado, deste modo como você está fazendo está bem legal, pouca coisa por vez acaba tendo um grande resultado no final.

    Não desanima não, aposto que tem um monte de gente lendo e fazendo.

    Aquele abraço...
  2. Avatar de JPEROLA
    seu material esta muito bom, to estudando linguagem C. e quando sobra um tempinho to seguindo seu material. Parabéns, tinha visto Python ha um tempo atras, mais não tinha me interresado muito, lendo de uma forma mais esclarecedora ta mudando minha visão.

    abraços.
    Atualizado 07-07-2010 em 13:26 por JPEROLA
  3. Avatar de beowulf
    Muito legal o tutorial...
    Qdo tera a continuacao
  4. Avatar de Magnun
    Já esta tendo continuação. Basta olhar aqui ou assinar o meu blog!

    Até mais...
  5. Avatar de fabiocs
    Obrigado....
    Muito bom este curso...
    Vou fazê-lo por completo...
    Abraço...
  6. Avatar de wapistos
    Obrigado pelo apoio.... ninguém é obrigado a compartilhar conhecimento por isso sou grato a vc de tão boa vontade compartilhar conosco aquilo que conseguiu aprender... vlw
  7. Avatar de Magnun
    Olá wapistos,

    Obrigado pelo comentário! Estou tentando fazer a minha parte de tentar retornar o conhecimento que eu adquiri. Qualquer dúvida pode comentar ai!

    Até mais...
  8. Avatar de Bhior
    Obrigado por mais um aula, go go proxima

    Abraços []'
  9. Avatar de rairo
    Nossa cara, a sua didática é muito boa...

+ Enviar Comentário