Controle de fluxo
Nos programas que vimos até agora, sempre houve uma série de declarações fielmente executadas pelo Python na ordem exata de cima para baixo. E se você quisesse mudar o fluxo de como funciona? Por exemplo, você quer que o programa tome algumas decisões e faça coisas diferentes, dependendo de situações diferentes, como a impressão de "Bom dia" ou "Boa noite", dependendo da hora do dia?
Como você pode ter adivinhado, isso é conseguido usando instruções de fluxo de controle. Existem três instruções de fluxo de controle em Python - if
, for
e while
.
A declaração if
A declaração if
é usado para verificar uma condição: if A condição é verdadeira, nós executamos um bloco de declarações (chamado de if-block), else processamos outro bloco de declarações (chamado de else-block). A cláusula else é opcional.
Exemplo (salvar como if.py
):
number = 23
guess = int(input('Enter an integer : '))
if guess == number:
# New block starts here
print('Congratulations, you guessed it.')
print('(but you do not win any prizes!)')
# New block ends here
elif guess < number:
# Another block
print('No, it is a little higher than that')
# You can do whatever you want in a block ...
else:
print('No, it is a little lower than that')
# you must have guessed > number to reach here
print('Done')
# This last statement is always executed,
# after the if statement is executed.
Saída:
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
Como funciona
Neste programa, adolecemos conjecturas do usuário e verificamos se é o número que temos. Definimos a variável number
para qualquer número inteiro que queremos, digamos 23
. Então, nós adiantamos o palpite do usuário usando a função input()
. As funções são apenas peças reutilizáveis de programas. Vamos ler mais sobre eles no Próximo Capítulo.
Nós fornecemos uma string para o built-in input
função que imprime na tela e aguarda a entrada do usuário. Depois de inserir algo e pressionar a tecla kbd: [enter], o input()
A função retorna o que entramos, como uma string. Então, convertem essa string em um inteiro usando int
e depois armazená-lo na variável guess
. Na verdade, o int
é uma classe, mas tudo o que você precisa saber agora é que você pode usá-lo para converter uma seqüência de caracteres em um inteiro (assumindo que a seqüência contém um número inteiro válido no texto).
Em seguida, comparamos o palpite do usuário com o número que escolhemos. Se forem iguais, imprimimos uma mensagem de sucesso. Observe que usamos níveis de indentação para dizer ao Python quais declarações pertencem a qual bloco. É por isso que a indentação é tão importante em Python. Espero que você esteja aderindo à regra do "recuo consistente". Você está?
Observe como o if
A declaração contém dois pontos no final - estamos indicando ao Python que um bloco de instruções segue.
Então, verificamos se o palpite é menor do que o número, e se assim for, informamos o usuário que eles devem adivinhar um pouco mais alto do que isso. O que usamos aqui é o elif
cláusula que realmente combina dois if else-if else
declarações em um combinado if-elif-else
declaração. Isso facilita o programa e reduz a quantidade de indentação necessária.
A elif
e else
As declarações também devem ter dois pontos no final da linha lógica, seguidas do respectivo bloco de instruções (com indentação adequada, é claro)
Você pode ter outro if
declaração dentro do if-block de um if
declaração e assim por diante - isso é chamado de aninhado declaração if
.
Lembre-se de que o elif
e else
as peças são opcionais. Um mínimo válido if
declaração é:
if True:
print('Yes, it is true')
Depois que o Python terminar de executar o completo if
declaração junto com o associado elif
e else
cláusulas, ele passa para a próxima declaração no bloco que contém a declaração if
. Nesse caso, é o bloco principal (onde a execução do programa começa), e a próxima declaração é a print('Done')
declaração. Depois disso, Python vê as extremidades do programa e simplesmente termina.
Embora este seja um programa muito simples, mostrei muitas coisas que você deve notar. Tudo isso é bastante direto (e surpreendentemente simples para aqueles de vocês de C / C ++ backgrounds). Você precisará tomar consciência de todas essas coisas inicialmente, mas depois de alguma prática você se sentirá confortável com elas, e tudo se sentirá "natural" para você.
Nota para programadores C / C ++
Não há
switch
declaração em Python. Você pode usar umif..elif..else
declaração para fazer o mesmo (e em alguns casos, use um dicionario para fazê-lo rapidamente)
A declaração While
A declaração while
permite que você execute repetidamente um bloco de instruções, desde que uma condição seja verdadeira. A declaração while
é um exemplo do que é chamado de declaração looping. A declaração while
pode ter uma clausula opcional else
.
Exemplo (salvar como while.py
):
number = 23
running = True
while running:
guess = int(input('Enter an integer : '))
if guess == number:
print('Congratulations, you guessed it.')
# this causes the while loop to stop
running = False
elif guess < number:
print('No, it is a little higher than that.')
else:
print('No, it is a little lower than that.')
else:
print('The while loop is over.')
# Do anything else you want to do here
print('Done')
Saída:
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
Como funciona
Neste programa, ainda estamos jogando o jogo de adivinhação, mas a vantagem é que o usuário tenha permissão para continuar adivinhando até que ele adivinha corretamente - não há necessidade de executar repetidamente o programa para cada adivinhação, como fizemos na seção anterior . Isso demonstra com certeza o uso da declaração while
.
Nós movemos o input
e if
declarações para dentro while
loop e ajuste a variável running
para True
antes do loop while. Primeiro, verificamos se a variável running
é True
e depois proceder a executar o correspondente while-block. Após este bloco ser executado, a condição é novamente verificada, que neste caso é o running
variável. Se é verdade, nós executamos o bloco while novamente, senão continuamos a executar o else-block opcional e depois continuamos para a próxima declaração.
O bloco else
é executado quando o while
condição de loop torna-se False
- Isso pode até ser a primeira vez que a condição é verificada. Se houver um else
cláusula para while
loop, ele sempre é executado a menos que você saia do loop com uma declaração break
.
A True
e False
são chamados de tipos booleanos e você pode considerá-los como equivalentes ao valor 1
e 0
respectivamente.
Nota para programadores C / C ++
Lembre-se de que você pode ter um
else
cláusula parawhile
loop.
O for
loop
A declaração for..in
é outra declaração em loop que iterates Sobre uma seqüência de objetos, digamos, cada item em uma seqüência. Vamos ver mais sobre sequencias em detalhes em capítulos posteriores. O que você precisa saber agora é que uma seqüência é apenas uma coleção ordenada de itens.
Exemplo (salvar como for.py
):
for i in range(1, 5):
print(i)
else:
print('The for loop is over')
Saída:
$ python for.py
1
2
3
4
The for loop is over
Como funciona
Neste programa, estamos imprimindo uma sequencia de numeros. Nós geramos essa seqüência de números usando o built-in a função range
.
O que fazemos aqui é fornecer dois números e range
retorna uma seqüência de números a partir do primeiro número e até o segundo número. Por exemplo, range(1,5)
dá a sequência [1, 2, 3, 4]
. Por padrão, range
demora uma etapa de 1. Se fornecemos um terceiro número para range
, então isso se torna a contagem de etapas. Por exemplo, range(1,5,2)
da [1,3]
. Lembre-se de que o alcance se estende até o segundo número, isto é, não incluir o segundo número.
Observe que range()
gera apenas um número por vez, se desejar a lista completa de números, ligue para list()
no range()
, por exemplo, list(range(5))
vai resultar em [0, 1, 2, 3, 4]
. As listas são explicadas no capítulo de estruturas de dados.
O loop for
então itera sobre esse intervalo - for i in range(1,5)
é equivalente a for i in [1, 2, 3, 4]
que é como atribuir cada número (ou objeto) na seqüência a i, um de cada vez e, em seguida, executar o bloco de instruções para cada valor de i
. Nesse caso, apenas imprimimos o valor no bloco de declarações.
Lembre-se de que o else
parte é opcional. Quando incluído, é sempre executado uma vez após o for
loop acabou, a não ser que break declaração é encontrada.
Lembre-se de que o for..in
loop funciona para qualquer sequência. Aqui, temos uma lista de números gerados pelo built-in range
função, mas, em geral, podemos usar qualquer tipo de sequência de qualquer tipo de objetos! Exploraremos esta idéia em detalhes em capítulos posteriores.
Nota para programadores C / C ++ / Java / C #
O loop Python
for
é radicalmente diferente do C / C ++for
loop. Os programadores C # notarão que o C / C ++for
loop em Python é semelhante aoforeach
loop em C #. Os programadores Java notarão que o mesmo é semelhante aofor (int i : IntArray)
em Java 1.5.Em C / C ++, se você quiser escrever
for (int i = 0; i < 5; i++)
, então, em Python você escreve apenasfor i in range(0,5)
. Como você pode ver, ofor
loop é mais simples, mais expressivo e menos propenso a erros em Python.
A declaração Break
A declaração break
é usado para break fora de uma instrução de loop, ou seja, interrompa a execução de uma instrução de loop, mesmo que a condição do loop não tenha se tornado False
ou a sequência de itens não foi completamente iterada.
Uma nota importante é que, se você break fora de um for
ou while
loop, qualquer correspondente loop else
bloqueio é not executado.
Exemplo (salvar como break.py
):
while True:
s = input('Enter something : ')
if s == 'quit':
break
print('Length of the string is', len(s))
print('Done')
Saída:
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 11
Enter something : quit
Done
Como funciona
Neste programa, repetidamente tomamos a entrada do usuário e imprimos o comprimento de cada entrada de cada vez. Estamos fornecendo uma condição especial para parar o programa, verificando se a entrada do usuário é
'quit'
. Paramos o programa por quebrar fora do loop e chegar ao final do programa.
O comprimento da seqüência de entrada pode ser descoberto usando o built-in da função len
.
Lembre-se que a declaração break
pode ser usado com o for
loop também.
Pitão poético de Swaroop
A entrada que usei aqui é um mini poema que escrevi:
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
A declaração continue
A declaração continue
é usado para dizer ao Python que salte o resto das instruções no bloco de loop atual e para continue para a próxima iteração do loop.
Exemplo (salvar como continue.py
):
while True:
s = input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
print('Too small')
continue
print('Input is of sufficient length')
# Do other kinds of processing here...
Saída:
$ python continue.py
Enter something : a
Too small
Enter something : 12
Too small
Enter something : abc
Input is of sufficient length
Enter something : quit
Como funciona
Neste programa, aceitamos a entrada do usuário, mas processamos a string de entrada somente se tiver pelo menos 3 caracteres. Então, usamos o built-in len
função para obter o comprimento e se o comprimento for inferior a 3, ignoramos o resto das instruções no bloco usando o continue
declaração. Caso contrário, o resto das instruções no loop são executadas, fazendo qualquer tipo de processamento que queremos fazer aqui.
Observe que a declaração continue
funciona com o for
loop também.
Resumo
Vimos como usar as três instruções de fluxo de controle - if
, while
e for
juntamente com os seus associadosbreak
e continue
afirmações. Estas são algumas das partes mais utilizadas de Python e, portanto, tornar-se confortável com elas é essencial.
Em seguida, veremos como criar e usar funções.