Iasmin Santiago
Iasmin Santiago10/09/2024 20:31
Compartilhe

Estruturas condicionais e de repetição em Python - Guia rápido!

  • #Python

Olá! Criei esse guia objetivo e direto para te auxiliar no aprendizado de Python!

Acho útil ter um resumo esteticamente menor e bem separado por tópicos, e espero que isso te ajude como tem me ajudado! Usei o Notion para escrever e as aulas fazem parte do bootcamp de engenharia de dados promovido pela NTT Data!

Indentação e blocos

  • Muito usado por estética, pois deixa código legível e manutenível
  • Mas no python, interpretador identifica onde bloco começa e termina. se não indentar, meu código não funciona. 4 espaços em branco por nível de indentação.
  • Já em outras linguagens, geralmente usam {} para demarcar.
# Python:

def sacar(self, valor:float) -> None 
  if self.saldo >= valor:
      self.saldo -= valor # dei 4 espaços, estou dentro do if
  # fim bloco if
# fim bloco método

# Java com indentação, mas só por estética
void sacar(double valor) {
  if (this.saldo >= valor){
      this.saldo -= valor;
  } # fim do bloco if
} #fim do bloco do método

# java sem indentação, funcionará. Porém, se fosse em python, não funcionaria
void sacar(double valor) {
if (this.saldo >= valor){
this.saldo -= valor;
} # fim do bloco if
}
  • abertura de bloco é no :
  • espaços indentados fazem parte do bloco aberto. Se eu digito algo no mesmo nível de def…, então não fará parte do método
def sacar(valor):
  saldo = 500
  if saldo >= valor:
      print("valor sacado. Retire o seu dinheiro na boca do caixa.")
  print("Obrigado por ser nosso cliente!")
sacar(100)

# se a condição if for atendida:
>>> valor sacado. Retire o seu dinheiro na boca do caixa."
      Obrigado por ser nosso cliente!
      
# Se condição não for atendida:
>>> Obrigado por ser nosso cliente!
# só ele foi executado pois parte do método, está indentado 4 espaços 

Estruturas condicionais

  • desvia o fluxo de controle se a expressão lógica for atendida
  • tomar uma ação dependente de condição
  • if/elif/else
  • Para criar 1 desvio só, uso if
  • para 2 desvios, uso if/else

Obs.: se não houver uma tratativa para resposta, ex.: tenho resposta para if obedecido mas nada caso não seja obedecido, então programa mostrará nada.

  • para 3 desvios, uso if/elif/else. Não existe número limite de elifs, posso usar vários elifs. Mas é bom evitar grandes estruturas condicionais por aumentarem complexidade. Coloca if, os elifs e a última opção (ex.: “N/A”, “nenhuma das opções”) no fim.
MAIOR_IDADE = 18
idade = int(input("Informe sua diade:"))

if idade >= MAIOR_IDADE:
  print("Maior de idade, pode tirar a CNH")
else:
  print("Ainda não pode tirar a CNH")

MAIOR_IDADE = 18
IDADE_ESPECIAL = 12

idade = int(input("Informe sua diade:"))

if idade >= MAIOR_IDADE:
  print("Maior de idade, pode tirar a CNH")
elif idade == IDADE_ESPECIAL:
  print("Pode fazer aula teórica, mas não as aulas práticas")
else:
  print("Ainda não pode tirar a CNH")
  • podemos aninhar essas estruturas também:
if conta_normal:
      if saldo>= saque:
          print("Saque realizado com sucesso")
      elif saque <= (saldo + cheque_especial):
          print("Saque realizado com uso do cheque especial")

elif conta_universitaria:
      if saldo >= saque:
          print("saque realizado com sucesso!")
      else:
          print("Saldo insuficiente!")
  • if ternário: escreve 3 condições numa só linha
  • expressao para True + if + expressão logica + else + retorno para False
status = "Sucesso" if saldo >= saque else "Falha"
print(f"{status} ao realizar o saque!")
saldo = 2000
saque = 2500

status = "Sucesso" if saldo >= saque else "Falha"

print(f"{status} ao realizar o saque!")

>>> Falha ao realizar o saque!

Estruturas de repetição

  • repete trecho de código n vezes conhecidas ou determinadas por expressão lógica. usamos quando não sabemos o número exato de vezes para executar o código ou quando queremos um objeto iterável…
  • como seria sem estrutura de repetição:
# receba um númeor do teclado e exiba os 23 números seguintes dele
 a = int(input("Informe um número inteiro:"))
 print(a)
 
 a += 1
 print(a)
 
 a += 1
 print(a)
 
a += 1
 print(a)

Usando estruturas de repetição:

  • for:
  • quando sabemos quantas vezes executar código ou se objeto iterável (ou seja, objeto a ser percorrido, ex.: string, lista etc).
  • o end=”“ é para os caracteres ficarem lado a lado, sem espaço, senão pula uma linha em cada letra (como uma coluna)
texto = input("Informe um texto: ")
VOGAIS = AEIOU

for letra in texto:
      if letra.upper() in VOGAIS:  #pois VOGAIS tem elementos maiúsculos
          print(letra, end="") 
      # se alguma letra do texto informado for vogal, ele imprime
      
print()  #adiciona quebra de linha
print("Chegamos ao final do laço.")

# informei texto Guilherme para o terminal:
>>> uiee
      Chegamos ao final do laço.
  • função Range
  • função built-in, já vem com o Python
  • produz sequência de inteiros a partir de um início inclusivo para um fim exclusivo
  • início inclusivo: ele inicia pelo início que informei, incluindo meu número informado. Se range(0,10), ele inicia de 0, inclui o 0.
  • fim exclusivo: o número final é excluído. Então, range(0,10) vai de 0 a 9, pois ele exclui o 10.
  • estrutura: range(i,j)
range(i,j)
>>> i, i+1, i+2, i+3, .... j-1

list(range(4)
>>> [0, 1, 2, 3]
  • argumentos: stop (é obrigatório, senão ele não cessa), start (opcional) e step (opcional também)

range(start, stop[, step[) → range object

  • stop e step tem [ para identificar que são argumentos opcionais
  • retornam um range object
 
# range(start, stop[, step[) → range object, não cria uma listinha.
# range(stop) -> range object
range(4)
>>> range (0,4) 
# note que não retornou uma lista, retornou um range object.

#Para retornar uma lista, deve-se usar list(range(...))
# list(range(...) -> cria lista
list(range(4))
>>> [0, 1, 2, 3]
# Note que, se quero começo em 0, não preciso mencioná-lo. 
#Basta mencionar, nesse caso, o stop.
  • aplicando range:
for numero in range(0,11):
      print(numero, end=" ")
      
      >>> 0 1 2 3 4 5 6 7 8 9 10
      
      
      
#exibindo a tabuada de 5 usando start, stop e step:
for numero in range(0, 51, 5):
print(numero, end=" ")

>>> 0 5 10 15 20 25 30 35 40 45 50
# e parou no 50 pois o stop é 51
# o passo é 5. Ele exibe a cada 5 unidades.
# Começa em 0 e ao invés de ir a´ra 1, ele vai par a5 e asim sucede.
      

# o end=" " é para exibir na mesma linha, e com espaço entre cada caractere. 
# O padrão, se não escrever isso, é ele dar enter entre respostas:
for numero in range(0, 9, 2):
print(numero)
>>> 0
      2
      4
      6
      8
      
for numero in range(0, 9, 2):
print(numero, end=" ")
>>> 0 2 4 6 8
  • while
  • executar até que algo aconteça, até que variável atinja certo valor
  • repete bloco de código várias vezes, para se não sei quantas vezes devo executá-lo
opcao = -1  # valor somente para criar a variável

while opcao != 0:
      opcao = int(input("[1] Sacar \\n[2] Extrato \\n[0] Sair \\n: "))
      # pergunta ao cliente a opção desejada: 1, 2, 0
      if opcao == 1:
              print("sacando...")
      elif opcao ==2:
              print("Exibindo o extrato...")
  • laço infinito com condição de parada: usa break dentro da condição de parada
while True:  
# ele executa enquanto for verdade, ou seja, para sempre
      numero = int(input("informe um número: "))
      
      if numero == 10:
              break    #mas coloco uma condição que, se ela for atendida, para
          
  >>> Informe um número:  4
          Informe um número:  100
          Informe um número:  58
          Informe um número:  -8
          Informe um número:  -10
          Informe um número:  10 # parou, cortou o laço da execução
  • comparando if iterável, range e while
# usando um iterável: é objeto conhecido, iterável
VOGAIS = "AEIOU"

for letra in texto:
  if letra.upper() in VOGAIS:
      print(letra, end="")
else:
  print() # adiciona uma quebra de linha)
  
# Se palavra for Gabriel:
>>> AIE

# usando built-in range: 
for numero in range(0, 51, 5)
      print(numero, end=" ")
>>> 0 5 10 15 20 25 30 35 40 45 50

  • usando break: interrompe o ciclo de iteração de for ou while
numero = int(input("informe um número: ")

for numero in range(100):
      if numero == 10:
              break  # parará quando número for 10
print(numero, end = " ")

>>> Informe um número: 10
      0 1 2 3 4 5 6 7 8 9  
      # pois no 10 ele cortou o laço, não se repete o código
  • usando continue → pula um ciclo de iteração. Usado com for e while, desvia de situação específica dentro do laço
numero = int(input("informe um número: ")

for numero in range(12):
      if numero == 4:
              continue # pulará o número 4 
print(numero, end = " ")

>>> 0 1 2 3 5 6 7 8 9 10 11  # lembrando que o 12  não é exibido, é exclusivo

Exercício: porque break vem antes de continue:

  • código errado:
numero = int(input("informe um número: ")

for numero in range(12):
      if numero % 2 == 0:  # se for numero par, pula o código
              continue # pulará qualquer número divisível por 2 (par) 
              
      if numero == 10:
              break # se for 10, ele para
              
      print(numero, end = " ")

>>> Informe um número: 1
      1
      Informe um número: 3
      3
      Informe um número: 2 # note que ele não exibiu, pulou, mas continua executando
      Informe um número: 5
      5
      Informe um número: 10 
      Informe um número: 7
      7
      # note que 10 é par, por isso não foi exibido... 
      # Mas deveria ter sido cortado, não o programa ter continuado e pedido mais um número
      # essa execução nunca termminará pois informar 10 não dará break
      
      

Isso ocorre pois continue está antes de break, então 10 que é par fez ele pular a execução do bloco if de baixo. Ou seja, o bloco contendo break não é executado.

ou seja, devemos trocar a ordem, com break vindo primeiro:

  • código correto:
numero = int(input("informe um número: ")

for numero in range(12):
      if numero == 10:
              break 
              
      if numero % 2 == 0: 
              continue 
          
      print(numero, end = " ")
      
      
>>> Informe um número: 1
      1
      Informe um número: 2
      Informe um número: 51
      51
      Informe um número: 10
      - 
      
      # não exibe mais "Informe um número:" pois cortou a execução.
Compartilhe
Comentários (0)