Controle a ordem na qual o código é executado.
If/elif/else
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
if 2**2 == 4:
print 'Óbvio!'
[/pastacode]
Blocos são delimitados por indentações.
Digite o seguinte bloco de código no Spyder2. Tenha cuidado com o tamanho da indentação. O Spyder2 automaticamente aumenta o tamanho da indentação após o sinal “:”. Use o backspace para retornar uma indentação.
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
a = 10
if a == 1:
print (1)
elif a==2:
print(2)
else:
print('mais...')
[/pastacode]
For/range/xrange
Iterando com um índice:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
for i in range(4):
print(i)
[/pastacode]
Mas na maioria das vezes, é mais legível para iterar sobre valores:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
for word in ('cool', 'powerful', 'readable'):
print('Python is
[/pastacode]
While/break/continue
Laço que funciona no estilo do C:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
z = 1 + 1j
while abs(z) < 100:
z = z**2 + 1
print z
[/pastacode]
Funções avançadas:
break, encerra o laço for ou while
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
z = 1 + 1j
while abs(z) < 100:
if z.imag == 4:
break
z = z**2 + 1
print z
[/pastacode]
continue, vai para a próxima iteração no laço
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
a = [1, 0, 2, 4]
for element in a:
if element == 0:
continue
print 1. / element
[/pastacode]
Expressões condicionais
if <OBJETO>:
Avalia para falso:
- qualquer numero igual a zero (0, 0.0, 0+0j)
- um recipiente vazio (list, tuple, set, dictionary, …)
- False, None
Avalia para verdadeiro:
- o resto
a == b:
Testa a igualdade, com lógica:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
1 == 1.
[/pastacode]
a is b:
Testa a identidade, se ambos os lados são o mesmo objeto.
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
1 is 1.
a = 1
b = 1
a is b
[/pastacode]
a in b:
Para qualquer coleção b, se b contém a:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
b = [1, 2, 3]
2 in b
5 in b
[/pastacode]
Se b é um dicionário, isso testa se a é uma chave de b.
Iteração Avançada
Iteração sobre qualquer sequência:
Você pode iterar sobre qualquer sequência (string, list, chaves em um dicitionario, linhas em um arquivo, …):
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
vogais = 'aeiou'
for i in 'poderoso':
if i in vogais:
print(i),
[/pastacode]
A vírgula é para imprimir na mesma linha.
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
menssagem = "Vamos programar em python?"
print menssagem.split() # retorna uma lista
for palavra in menssagem.split():
print palavra
[/pastacode]
Poucas linguagens (em particular para computação cientifica) permitem laços sobre qualquer coisa a não ser inteiros ou índices. Com Python é possível fazer um laço exatamente sobre os objetos de interesse se se preocupar com índices que não interessam.
ATENÇÃO: Não é seguro modificar a sequência que se está iterando sobre.
Controle do número de enumeração
Uma tarefa comum é iterar sobre uma sequência e visualizar também o número do item:
Poderia ser utilizado um laço while com um contador, ou para um for:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
palavras = ('legal', 'poderoso', 'legível')
for i in range(0, len(palavras)):
print i, palavras[i]
[/pastacode]
Mas, o Python fornece a palavra chave enumerate para isso:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
palavras = ('legal', 'poderoso', 'legível')
for indice, item in enumerate(palavras):
print indice, item
[/pastacode]
Laço sobre um dicionário
Use iteritems:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
d = {'a': 1, 'b':1.2, 'c':1j}
for chave, valor in d.iteritems():
print('Chave:
[/pastacode]
Abrangências da lista
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
[i**2 for i in range(4)]
[/pastacode]
Pode-se criar uma lista com o uso do if e do for.