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.