[Curso de Python] Python Interativo
por
em 18-09-2009 às 09:57 (17057 Visualizações)
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:
No Linux 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 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: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. >>>
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:
Estou brincando, isso é só pra demonstrar algumas coisas em Python.Código :>>> 1+1 # Exemplo difícil 2 >>>
- Os comentários são feitos através de #. Tudo que vem depois de # até o final da linha não é interpretado.
- 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
Até aqui tudo normal, nenhum segredo e nada complicado.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 >>>
Multiplicação
Novamente nenhuma novidade. Vamos para algo mais interessante...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 >>>
Divisão
Ok, aqui temos algumas coisas interessantes: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 >>>
- 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
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.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 >>>
Abaixo uma lista de prioridades de operadores:
- Potência: **;
- Multiplicação e divisão: *, /, // e %;
- 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:
Uma dúvida que deve surgir é: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 >>>
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...
Comentários
+ Enviar Comentário