About
Swaroop C H is 27 years of age. He graduated in B.E. (Computer Science) from PESIT, Bangalore, India. He has previously worked at Yahoo! and Adobe.
Page
Support
Personal tools
COLLECTION
Collection
Python pt-br:Controle de Fluxo
From Notes
Contents |
[edit] Introdução
Nos programas que vimos até agora, houveram uma série de declarações e o Python executa-os na mesma ordem. E se você quisesse alterar o fluxo de seu funcionamento? Por exemplo, você quer que o programa tome algumas decisões e faça diferentes coisas dependendo das diferentes situações, como imprimir 'Bom Dia' ou 'Boa Tarde' dependendo da hora do dia?
Como você deve ter pensando, isto é alcançado usando as instruções de controle de fluxo no Python - if, for e while.
[edit] A instrução IF
A instrução if é usada para verificar uma condição e se a condição é verdadeira, será executado um bloco de instruções (chamado de bloco-if(if-block)), senão será processado outro bloco de instruções (chamado de bloco-else(else-block)). A cláusula elseé opcional.
Exemplo:
#!/usr/bin/python # Nome do aquivo: if.py number = 23 guess = int(input('Entre com um número inteiro : ')) if guess == number: print('Parabéns, você advinhou.') # Novo bloco começa aqui print('(mas você não ganhou nenhum prêmio!)') # Novo bloco termina aqui elif guess < number: print('Não, era um pouco maior que isso') # Outro bloco # Você pode fazer o que quiser em um bloco ... else: print('Não, era um pouco menor que isso') # Você deve adivinhar > número a alcançar aqui print('Feito') # Esta última instrução é sempre executada, depois da instrução if ser executada
Saída:
$ python if.py Entre com um número inteiro : 50 Não, era um pouco menor que isso Feito $ python if.py Entre com um número inteiro : 22 Não, era um pouco maior que isso Feito $ python if.py Entre com um número inteiro : 23 Parabéns, você advinhou. (mas você não ganhou nenhum prêmio!) Feito
Como Funciona:
Neste programa, recebemos tentativas de advinhações do usuário e verificamos se este é igual ao número que temos. Setamos a variável number para qualquer inteiro que desejarmos, digamos 23. Então, pegamos a tentativa de advinhação do usuário usando a função input(). Funções são peças de programas reutilizáveis. Iremos ler mais sobre elas no próximo capítulo.
Nós fornecemos uma string para função enbutida input que a imprime na tela e aguarda uma entrada do usuário. Uma vez que entramos com algum valor e apertamos a tecla enter, a função input() retorna o valor que entramos, como uma string. Nós, então, convetemos essa string para um inteiro usando int e depois armazenamos na variável guess. Na verdade, o int é uma classe, mas tudo o que voê precisa saber agora é que você pode usá-la para converter uma string em um número inteiro (assumindo que a string contém um número inteiro válido no texto).
A seguir, comparamos a tentativa de adivinhação do usuário com o número que escolhemos. Se eles forem iguais, imprimimos uma mensagem de sucesso. Note que utilizamos níveis de indentaçãopara dizer ao Python que instruções pertencem a qual bloco. É pos isso que a indentação é tão importante no Python. Eu espero que você esteja mantendo a regra da "indentação consistente". Você está?
Perceba que a instrução if contém 'dois pontos' no final - nós estamos indicando ao Python que a seguir há um bloco de instruções.
Então, checamos se a tentativa de advinhação do usuário é menor que o número da variável number, e se for verdadeiro, informamos ao usuário para tentar com um número um pouco maior que o inserido. O que usamos aqui é a clausula elif que, na verdade, combina duas instruções if else-if else relacionadas em uma instrução if-elif-else combinada. Isso torna o programa mais fácil e reduz quantidade de indentações requeridas.
As instruções elif else devem, também, possuir 'dois pontos' no final da linha lógica, seguido pelo seu bloco de instruções correspondente (com indentação apropriada, é claro).
Você pode ter outra instrução if dentro de um bloco-if de uma instrução if if a assim por diante - isto é chamado de instrução if aninhada
Lembre que as partes elif e else são opcionais. Uma instrução if mínima válida é:
if True: print('Sim, é verdadeiro')
Depois que python terminou de executar a instrução if completamente, junto com as cláusulas elif e else associadas, ele passa para a próxima instrução no bloco contendo a instrução if. Neste caso, é o bloco principal onde a execução do programa inicia e a próxima instrução é print('Feito'). Depois disso, Python vê o final do programa e simplesmente termina.
Ainda que este seja um programa muito simples, eu estive apontando várias coisas que você deve notar em programas assim. Todas elas são bem avançadas (e surpreendentemente simples para todos vocês com conhecimento em C/C++) e requerem que você esteja inicialmente ciente de todas elas, mas depois disso, você irá se familiarizar e isso irá se tornar 'natural' para você.
- Nota para os programadores de C/C++
- Não há a instrução switch no Python. Você pode usar uma instrução if..elif..else para fazer a mesma coisa (e em alguns casos, usar um dicionário para fazê-lo rapidamente)
[edit] A instrução while
A instrução while permite que você execute repetidamente um bloco de instruções enquanto uma condição for verdadeira. Uma instrução while é um exemplo do que é chamado de instrução de looping. Uma instrução while pode ter uma cláusula else opcional.
Exemplo:
#!/usr/bin/python # Nome do arquivo: while.py number = 23 running = True while running: guess = int(input('Entre com um número inteiro : ')) if guess == number: print('Parabéns, você advinhou.') running = False # Isto faz o loop while parar elif guess < number: print('Não, é um pouco maior que este.') else: print('Não, é um pouco menor que este.') else: print('O loop while terminou.') # Faça qualquer outra coisa que quiser aqui print('Fim')
Saída:
$ python while.py Entre com um número inteiro : 50 Não, é um pouco menor que este. Entre com um número inteiro : 22 Não, é um pouco maior que este. Enter an integer : 23 Parabéns, você advinhou. O loop while terminou. Fim
Como funciona:
Neste programa, nós ainda estamos jogando o jogo da advinhação, mas a vantagem é que o usuário pode continuar tentando advinhar até que ele acerte o número - não ha necessidade de rodar novamente o programa para cada tentativa de adivinhação, como fizemos na seção anterior. Isto demonstra o uso da instrução while.
Nós movemos oinput e a instrução if para dentro do loop while e setamos a variável running para True antes do loop while. Primeiro, nós checamos se a variável running é True(verdadeiro) e então seguimos para executar executar o <emphasis>bloco while</emphasis> correspondente. Depois que o bloco é executado, a condição é novamente checada que neste caso é a variável running. Se isso é verdade, nós executamos o bloco while novamente, senão continuamos para executar o bloco else optional e então seguir para a próxima instrução.
O bloco else é executado quando a condição do loop while se torna False(falso) - esta pode até ser a primeira vez que a condição é verificada. Se há alguma cláusula else para um loop while, ele é sempre executado a menos que você tenha um loop while que se executado para sempre sem sair sequer uma vez!
Os valores True(verdadeiro) e False(falso) são chamados tipos Booleanos e você pode considerá-los equivalentes aos valores 1 e 0 respectivamente.
O bloco else é, na verdade, redundante a partir que você pode colocar estas instruções no mesmo bloco (como a instrução while) depois da instrução while para conseguir o mesmo efeito.
- Nota para programadores de C/C++
- Lembre que você pode ter uma cláusula else else para o loop while.
[edit] O loop for
A instrução for..in é outra instrução de loop que itera sobre uma sequência de objetos, por exemplo, percorre cada item em uma sequência. Iremos ver mais sobre sequências em detalhes em capítlos posteriores. O que você precisa saber agora é que uma sequência é apenas uma coleção ordenada de itens.
Exemplo:
#!/usr/bin/python # Nome do arquivo: for.py for i in range(1, 5): print(i) else: print('O loop for terminou.')
Saída:
$ python for.py 1 2 3 4 O loop for terminou.
Como funciona:
Neste programa, estamos imprimindo uma sequência de números. Nós geramos esta sequência de números usando a função interna range.
O que fazemos é fornecer dois números e range retorna uma sequência de números iniciando do primeiro número e segue até o segundo número. Por exemplo, range(1,5) nos dá a sequência [1, 2, 3, 4]. Por padrão, range dá um passo contando de 1 em 1. Se fornecer-mos um terceiro número para range, então ele se torna o tamanho do passo. Por exemplo, range(1,5,2) nos dá [1,3]. Lembre-se que range extende-se até o segundo número, ou seja, ele não inclui o segundo número.
O loop for então itera sobre esta faixa - for i in range(1,5) é equivalente a for i in [1, 2, 3, 4] que é a mesma coisa que atribuir cada número (ou objeto) na sequência a i, um de cada vez, e então executar o bloco de instrições para cada valor de i. Neste caso, nós apenas imprimimos o valor no bloco de instruções.
Lembre-se que a parte else é opcional. Quando incluída, ela será sempre executada uma vez após o loop for ter terminado, a não ser que uma instrução break seja encontrada.
Lembre-se que o loop for..in funciona para qualquer sequência. Aqui, temos uma lista de números gerados pela função interna range, mas, no geral, podemos usar qualquer tipo de sequência de qualquer tipo de objeto! Iremos explorar essa idéia em detalhes em capítulos posteriores.
- Nota para programadores de C/C++/Java/C#
- O loop for do Python é radicalmente diferente do loop for das linguagens C/C++. Programadores da linguagem C# irão notar que o loop for no Python é similar ao loop foreach em C#. Programadores da linguagem Java irão notar que o mesmo é similar a for (int i : IntArray) em Java 1.5 .
- Em C/C++, se você quer escrever for (int i = 0; i < 5; i++), então em Python você escreve apenas for i in range(0,5). Como você pode ver, o loop for é mais simples, mais expressivo e menos propenso a erros no Python.
[edit] A instrução break
A instrução break é usada para quebrar uma instrução de loop, ou seja, para a execução de uma instrução de loop, mesmo que a condição não tenha se tornado False ou a sequência de itens tenha sido iterada completamente.
Uma informação importante é que se você quebra um loop for ou while, qualquer bloco else correspondente não é executado.
Exemplo:
#!/usr/bin/python # Nome do arquivo: break.py while True: s = input('Entre com alguma coisa: ') if s == 'sair': break print('Tamanho da string é ', len(s)) print('Feito')
Saída:
$ python break.py Entre com alguma coisa: Programar é divertido Tamanho da string é 21 Entre com alguma coisa: Quando o trabalho está feito Length of the string is 28 Entre com alguma coisa: se você quer tornar seu trabalho também divertido: Tamanho da string é 51 Entre com alguma coisa: use Python! Tamanho da string é 12 Entre com alguma coisa: sair Feito
Como funciona:
Neste programa, nós recebemos os dados de entrada do usuário repetidamente e imprimimos o tamanho de cada entrada toda vez. Estamos provendo uma condição especial para parar o programa verificando se a entrada do usuário é 'sair'. Paramos o programa com <emphasis>break</emphasis>, fazendo com que saiamos do loop e alcancemos o fim do programa.
O tamanho da entrada pode ser encontrado utilizando a função interna len.
Lembre-se que a instrução break pode também ser usada com o loop for.
[edit] Python Poético do Swaroop
Os dados de entrada que utilizei aqui é um mini poema que escrevi chamado Python Poético do Swaroop:
Programar é divertido
Quando o trabalho está feito
se você quer tornar seu trabalho também divertido:
use Python!
[edit] A Instrução continue
A instrução continue é usada para dizer ao Python que pule as intruções restantes do bloco de loop corrente e para continuar (continue) na iteração seguinte do loop.
Exemplo:
#!/usr/bin/python # Arquivo: continue.py while True: s = input('Entre com algo : ') if s == 'sair': break if len(s) < 3: print('Muito pequeno') continue print('A entrada é de tamanho suficiente') # Faça outros tipos de processo aqui...
Saída:
$ python continue.py Entre com algo : a Muito pequeno Entre com algo : 12 Muito pequeno Entre com algo : abc A entrada é de tamanho suficiente Entre com algo : sair
Como funciona:
Neste programa, aceitamos entradas do usuário, mas as processamos somente se ela possuírem pelo menos 3 caracteres. Então, utilizamos a função interna len para pegar o tamanho e se este for menor que 3, pulamos o resto das instruções no bloco utilizando a instrução continue. Senão, o resto das instruções no loop são executadas e poderemos fazer qualquer tipo de processamento que quiser-mos aqui.
Note que a instrução continue funciona, também, com o loop for.
[edit] Sumário
Vimos como utilizar as três instruções de controle de fluxo - if, while and for, em conjunto com suas instruções break e continue associadas. Estas são algumas das partes mais utilizadas do Python e outras, tornar-se confortável com elas é essencial.
A seguir, veremos como criar e utilizar funções.
Please add your comments by clicking on the 'Discussion' link in the left sidebar.