Fluxo de Controle

Condicionais: if, elif, else

A sintaxe de Python para execução condicional de código utiliza as seguintes palavras-chave: if, elif (else if), else. Além disso, blocos de código em Python são delimitados pelo nível de identação deles. Em linguagens como C e Java, blocos de código são delimitados por {}, e a identação do código é simplesmente uma boa prática de programação, mas não é necessária para o correto funcionamento dos programas. Em Python, a identação é parte integrante do programa, sendo essencial para seu correto funcionamento.

sentenca_1 = False
sentenca_2 = False

if sentenca_1:
    print("sentenca_1 é verdadeira.")
elif sentenca_2:
    print("sentenca_2 é verdadeira.")
else:
    print("sentenca_1 e sentenca_2 são falsas.")

sentenca_1 e sentenca_2 são falsas.
# Má identação!
if sentenca_1:
    if sentenca_2:
    print("Ambas sentenças são verdadeiras.")  # Esta linha não está identada corretamente.
  File "<ipython-input-227-30e2d674efad>", line 4
    print("Ambas sentenças são verdadeira.")  # Esta linha não está identada corretamente.
        ^
IndentationError: expected an indented block
s = True 

if s:
    print("Impresso se s for verdadeiro.")
    
    print("Ainda dentro do if. Note a identação.")
Impresso se s for verdadeiro.
Ainda dentro do if. Note a identação.
if s:
    print("Impresso se s for verdadeiro.")
    
print("Agora fora do if. Note a identação.")
Impresso se s for verdadeiro.
Agora fora do if. Note a identação.

Laços (Loops)

Existem vários tipos de laços (loops) em Python. O mais comum deles é o for, que é usado com objetos iteráveis tais como listas e intervalos. Os exemplos abaixo mostram o funcionamento básico do for.

# Percorrendo uma lista de números.
print("Números em uma lista: ")
for numero in [1, 1, 2, 3, 5, 8, 13]:
    print(numero)
Números em uma lista: 
1
1
2
3
5
8
13
# Percorrendo uma lista de palavras.
print("Palavras em uma lista:")
for palavra in ["Algoritmos", "em", "Python"]:
    print(palavra)
Palavras em uma lista:
Algoritmos
em
Python
# Percorrendo um intervalo. Por padrão, intervalos começam em zero.
for i in range(3):
    print(i)
0
1
2

Observação: range(3) não inclui o 3, como mencionamos anteriormente.

Percorrendo os pares chave-valor em um dicionário:

for chave, valor in paises.items():
    print(chave + " = " + str(valor))
BRA = Brazil
EUA = Estados Unidos
FRA = France
ESP = Espanha

Nos exemplos acima, ao percorrer os elementos de uma sequência, não usamos o índice do elemento (sua posição na sequência). Entretanto, há situações em que esta informação é útil. Python nos permite acessar tanto os índices dos elementos quanto os elementos propriamente ditos se usarmos a função enumerate.

for indice, elemento in enumerate(range(-3,3)):
    print(indice, elemento)
0 -3
1 -2
2 -1
3 0
4 1
5 2

List comprehensions

List comprehensions são uma forma concisa e elegante de criação e inicialização de listas por meio de laços for.

quadrados = [n ** 2 for n in range(0, 10)]
print(quadrados)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
quadrados_numeros_impares = [n ** 2 for n in range(0, 10) if n % 2 == 1]
print(quadrados_numeros_impares)
[1, 9, 25, 49, 81]
siglas_paises = [(sigla, pais) for sigla, pais in paises.items()]
print(siglas_paises)
[('BRA', 'Brazil'), ('EUA', 'Estados Unidos'), ('FRA', 'France'), ('ESP', 'Espanha')]

Laços while

i = 1
while i < 5:
    print(i)
    i = i + 1
1
2
3
4