2.3 Control Flow
2.3.1 Control Flow
Nesta aula serão abordados temas como:
- Conditional statements (Famoso if e else)
- Expressões booleanas
- Loops usando for e while
- Como uma estratégia de parada dos loops break e continue
- Zip e enumerate (Isso eu num sei o que é)
- List comprehensions (idem, no idea)
2.3.1.1 Revisão da Lesson02
Data Structure | Ordered | Mutable | Constructor | Example |
---|---|---|---|---|
int | NA | NA | int() |
5 |
float | NA | NA | float() |
6.5 |
string | Yes | No | ‘’ ou " " ou str() |
“teste” |
bool | NA | NA | NA | True ou False |
list | Yes | Yes | [ ] ou list() |
list[1,2] |
tuple | Yes | No | ( ) ou tuple() |
tuple(1,2) |
set | NA | Yes | { } ou set() |
set(1,2) |
dictionary | NA | Keys: No | { } ou dict() |
dict(“jul”:1,“jun”:2) |
Maiores informações acerca das built-in
functions e methods
somente acessando as notes_lesson02.md.
2.3.2 Expressões Booleanas
Algumas expressões booleanas dignas de nota:
2.3.2.1 a < b < c ou a > b > c
Essa expressão pode ser uma condição de avaliação de uma conditinal statement, por exemplo.
# Exemplo do video
if 18.5 <= weight / height**2 < 25: # A relação weight / height**2 deve estar
print("BMI is considered 'normal'") # entre 18.5 e 25 para que a condição seja aceita
2.3.3 Conditional statements
Note que no Python diferentemente de outras linguagem de programação não possui o maldito abre e fecha de {}
para definir quando um conditinal statement começa e termina, por este motivo a indentação é fundamental para que a linguagem seja interpretada corretamente pelo compilador. Não se esquecer do :
.
O exemplo abaixo possui dois if’s nested.
if condição:
+---+------------------+ # 1: Espaços necessários para indentar corretamente;
| 1 | 2 | # 2: área do código que deverá ser executada caso
+---+------------------+ # a condição seja verdadeira
else:
if condição2:
+---+---------------------+ # 3: Espaços necessários para indentar corretamente;
| 3 | 4 | # 4: área de código
+---+---------------------+
else:
+---+---------------------+
| 3 | 4 |
+---+---------------------+
2.3.3.1 if()
if dinheiro < 200: # Condição
dinheiro += 200 # Ações caso a condição
banco -= 200 # seja satisfeita
É o principal conditional statement e serve para filtrar, separar, eleger etc. algum elemento para sofrer uma determinada sequencia de comandos.
2.3.3.2 else
if (numero % 2) == 0: # Se o resto for igual a zero, é um número par
print(str(numero) + " é par") # Imprime texto se a condição for verdadeira
else:
print(str(numero) + " é ímpar") # Imprime texto se a condição for falsa.
É o complemento do if e não requer condição (já que é o resto da condição do if), possui uma dualidade entre 0
e 1
, mas em alguns casos há mais de dois estados, nestas situações usa-se o elif()
.
2.3.3.3 elif()
if numero > 100:
print("maior que 100")
elif numero > 50:
print("maior que 50 e menor e igual a 100")
else:
print("número menor ou igual a 50")
Note que o o elif()
é um intermediário entre o if()
e o else, onde ele desempenha um papel de diminuir a quantidade de nested if.
2.3.4 Loops
As estruturas (que seriam os bloquinhos de código) do f0r e do while são parecidos com aqueles do conditional statements, pois os loops baseiam-se também pela indentação do código.
for condição:
+---+------------------+ # 1: Espaços necessários para indentar corretamente;
| 1 | 2 | # 2: área do código que deverá ser executada caso
+---+------------------+ # a condição seja verdadeira
2.3.4.1 for()
for i in n: # i é a variável e n é uma lista de elementos
print(i) # imprime todos os elementos da lista n
O laço for será executado para cada elemento da lista n. Após percorrer a lista o laço termina.
2.3.4.2 while()
money = 0
while money < 1000: # o laço será executo indefinidamente até que a condição seja False
money += 100 # imprime money
A diferença entre for e while é que o segundo não possui limites, ele poderá ser executado indefinidamente até que a condição de parada seja atingida.
2.3.5 List Comprehensions
Isso é algo único da linguagem Python, segundo a Juno Lee só em Python tem essa coisa aí.
minha_lista = ["anderson", "hitoshi", "uyekita"] # Lista qualquer
nova_lista =[] # Uma nova lista
# Um loop de exemplo.
for nom in minha_lista:
nova_lista.append(nom.title())
print(nova_lista) # imprime o resultado para comparar
# Em uma linha faz-se tudo.
nova_lista = [nom.title() for nom in minha_lista]
print(nova_lista) # para conferir.
Note que o mesmo código que foi feito utilizando algumas linhas, pode ser realizada usando uma única linha.
2.3.6 Built-in functions
Esta será um lista das funções e qualquer outra coisa que foi apresentado em sala de aula.
2.3.6.1 range()
start,end,step = 1,6,2 # inicializa os dados
# start possui valor default de zero
# step possui valor default de 1
lista = range(1,6,2) # cria um objeto classe range
# print(lista) é um <class 'range'>
# A lista implícita é: [1, 3, 5]
A variável criada lista é um objeto de classe range e só será útil se caso a utilize em associação com o for (ainda não encontrei outras casos de uso do range()
).
2.3.6.2 sum()
minha_lista = [10, 20, 30, 40] # Um exemplo de lista
sum(minha_lista) # Retorna a soma dos elementos da lista
Simplesmente retorna a soma de todos os elementos de dada lista.
2.3.6.3 Break
Interrompe a instância de for ou while saindo totalmente do laço.
2.3.6.4 Continue
Pula a iteração para a próxima. É melhor porque não interrompe repentinamente a execução do script.
2.3.6.5 zip()
nome = ["anderson", "hitoshi", "uyekita"] # Uma lista qualquer
index = [1, 2, 3] # Outra lista qualquer
print(zip(nome,index)) # Unindo as duas listas para criar uma lista de tuples
# Note que se pode usar o unpacking também
Observe que é possível criar uma lista de tuple’s, conforme o exemplo acima, mas para realizar o unpacking deve-se utilizar um “operador” que ainda não foi abordado, mas de uso específico que é o “*“.
lista_tuples = [('anderson', 1), # lista qualquer de tuples
('hitoshi', 2), # é só um exemplo
('uyekita', 3)]
nome, index = zip(*lista_tuples) # Unpacking usando o *
Isso é bem prático quando tempos uma lista de tuple’s.
2.3.6.6 enumerate
letters = ['anderson', 'hitoshi', 'uyekita'] # Uma lista qualquer.
for i in enumerate(letters): # Cria uma lista de tuple's.
print(i) # Imprime cada tuple da lista criada.
A única maneira de entender essa função é aplicando a num for. O resultado é a criação de tuple’s.
2.3.7 Methods
2.3.7.1 .items()
apelidos = {"Chico": 'Francisco', # Declarando uma biblioteca
"Tião": 'Sebastião',
"Zé": 'José'}
for key,value in apelidos.items(): # Emprego do .items()
print("Apelido: {} e Nome:{}".format(key,value))
Nos casos onde é necessário as informações dos values de uma biblioteca, usa-se o .items()
.
A work by AH Uyekita
anderson.uyekita[at]gmail.com