Agora que já aprendeste a usar os ciclos for e while, a empresa PyTalento pediu-te para explorar outras formas de repetir tarefas e decidir quando usar cada tipo de ciclo. Em algumas linguagens de programação, existe uma estrutura chamada repeat-until, que executa um bloco de código repetidamente até que uma condição seja satisfeita. Embora o Python não tenha um ciclo repeat-until nativo, podemos usar o ciclo while para simular o mesmo comportamento.
Objetivos
- Compreender as diferenças entre os ciclos
forewhile. - Aprender a simular o comportamento de um ciclo
repeat-untilusandowhile. - Saber quando usar cada tipo de ciclo.
Comparação entre for e while
Os ciclos for e while têm propósitos ligeiramente diferentes:
- O ciclo
foré ideal para situações em que sabes o número de iterações de antemão, como ao repetir uma tarefa um número fixo de vezes. - O ciclo
whileé mais adequado para quando precisas de repetir uma tarefa até que uma condição seja satisfeita, sem saber exatamente quantas vezes isso vai acontecer.
Exemplo de Ciclo for:
# Exemplo de ciclo for para repetir uma tarefa 5 vezes
for i in range(5):
print("Esta é a iteração número:", i)
Este ciclo for repete-se 5 vezes, já que sabemos de antemão quantas iterações são necessárias.
Exemplo de Ciclo while:
# Exemplo de ciclo while que continua até o utilizador introduzir um número válido
numero = -1
while numero < 0:
numero = int(input("Introduz um número positivo: "))
print("Número válido introduzido:", numero)
Neste exemplo, o ciclo while continua até que o utilizador introduza um número positivo. Não sabemos quantas vezes o utilizador terá de introduzir o número corretamente, por isso o ciclo while é mais adequado aqui.
Simular o Ciclo repeat-until com while
Em algumas linguagens de programação, existe um ciclo chamado repeat-until (ou do-while), que garante que o bloco de código é executado pelo menos uma vez e depois continua a repetir-se até que uma condição seja satisfeita. Embora o Python não tenha um ciclo repeat-until, podemos simular o seu comportamento com o ciclo while da seguinte maneira.
Estrutura de um Ciclo repeat-until:
O ciclo repeat-until pode ser descrito assim:
repeat
bloco de código
until condição
Este ciclo executa o "bloco de código" repetidamente até que a "condição" seja verdadeira. A diferença para o while normal é que o bloco de código é sempre executado pelo menos uma vez.
Simulação com while:
Para simular um repeat-until em Python, usamos um ciclo while com a condição invertida. O código pode ser estruturado da seguinte forma:
# Simular repeat-until com while
while True:
numero = int(input("Introduz um número positivo: "))
if numero >= 0:
break # Sair do ciclo se a condição for satisfeita
print("Número válido introduzido:", numero)
Aqui, usamos o ciclo while True para garantir que o bloco de código é sempre executado pelo menos uma vez. Depois, usamos a instrução break para sair do ciclo quando a condição é satisfeita (neste caso, quando o número introduzido é positivo).
Quando Usar Cada Tipo de Ciclo
De forma geral, deves escolher entre os ciclos for e while com base no seguinte:
- Usa
forquando sabes à partida quantas iterações serão necessárias (por exemplo, repetir 10 vezes). - Usa
whilequando o número de iterações depende de uma condição que pode mudar de forma imprevisível (por exemplo, continuar até que o utilizador introduza um valor válido). - Usa
while Truecom uma instruçãobreakpara simular um ciclorepeat-untilou quando precisas de garantir que o código será executado pelo menos uma vez.
Exercício Prático
A empresa PyTalento pediu-te que desenvolvas um programa que continue a pedir uma password até que o utilizador introduza a password correta. O programa deve garantir que a mensagem para introduzir a password é exibida pelo menos uma vez. O programa deve seguir os seguintes passos:
Requisitos:
- Pede ao utilizador para introduzir a password.
- Continua a pedir até que a password correta seja introduzida (podes definir uma password, como "12345").
- Quando a password correta for introduzida, imprime uma mensagem de sucesso e termina o programa.
Exemplo de Código:
# Simular o comportamento do repeat-until com while
password_correta = "12345"
while True:
password = input("Introduz a password: ")
if password == password_correta:
print("password correta! Acesso permitido.")
break # Sair do ciclo quando a password estiver correta
else:
print("password incorreta. Tenta novamente.")