Na tua nova tarefa na empresa PyTalento, vais aprender a lidar com situações em que não sabes exatamente quantas vezes será necessário repetir uma ação. Para isso, vais usar o ciclo while, que permite repetir um bloco de código enquanto uma condição for verdadeira. O ciclo while é ideal para quando o número de iterações depende de uma condição dinâmica que pode mudar durante o tempo de execução.
Objetivos
- Compreender o conceito de ciclos
whileem Python. - Aprender a usar o
whilepara repetir tarefas enquanto uma condição for verdadeira. - Explorar exemplos práticos do ciclo
whileem cenários do dia a dia.
O que é um Ciclo while?
O ciclo while é uma estrutura de controlo de fluxo que repete um bloco de código enquanto uma condição for verdadeira. Ao contrário do ciclo for, o número de repetições do while depende do estado da condição, e não de uma sequência fixa de valores.
Exemplo Simples de Ciclo while:
# Exemplo básico de um ciclo while
contador = 1
while contador <= 5:
print("Esta é a iteração número:", contador)
contador += 1
Neste exemplo, o ciclo while repete-se enquanto o valor da variável contador for menor ou igual a 5. A cada iteração, a variável contador é incrementada em 1, e o ciclo termina quando a condição (contador <= 5) deixa de ser verdadeira.
Diferença entre o Ciclo while e o Ciclo for
A principal diferença entre o ciclo while e o ciclo for é a forma como controlam o número de repetições:
- O ciclo
foré ideal quando sabes antecipadamente quantas vezes o ciclo deve ser repetido, como ao iterar sobre uma lista ou sequência de valores. - O ciclo
whileé mais adequado para situações em que a repetição depende de uma condição que pode mudar de forma imprevisível.
Usar o Ciclo while para Repetir uma Tarefa
Uma das aplicações mais comuns do ciclo while é validar dados de entrada. Por exemplo, podes querer pedir ao utilizador uma nota válida entre 0 e 20 e repetir a solicitação até que o utilizador introduza um valor dentro desse intervalo.
Exemplo: Pedir uma Nota Válida
# Exemplo de ciclo while para validar uma nota
nota = float(input("Introduz uma nota entre 0 e 20: "))
while nota < 0 or nota > 20:
print("Nota inválida. Tenta novamente.")
nota = float(input("Introduz uma nota válida entre 0 e 20: "))
print("A nota introduzida foi:", nota)
Neste exemplo, o ciclo while continua a pedir uma nova nota até que o utilizador introduza um valor dentro do intervalo especificado (entre 0 e 20). O ciclo termina quando a condição (nota < 0 ou nota > 20) deixa de ser verdadeira.
Evitar Ciclos Infinitos
Um dos riscos ao usar o ciclo while é a criação acidental de um ciclo infinito, que nunca termina. Isso acontece quando a condição do ciclo continua a ser verdadeira indefinidamente. Para evitar ciclos infinitos, certifica-te de que a condição eventualmente se torna falsa ou de que incluis uma forma de interromper o ciclo.
Exemplo de Ciclo Infinito (a Evitar!):
# Exemplo de ciclo while infinito (não recomendado)
contador = 1
while contador <= 5:
print("Esta é a iteração número:", contador)
# Esquecer de incrementar o contador causa um ciclo infinito!
Neste exemplo, o ciclo while nunca termina porque o valor de contador nunca é incrementado, resultando num ciclo infinito. Para corrigir este erro, certifica-te sempre de que a condição de saída será eventualmente satisfeita.
Exercício Prático
A empresa PyTalento pediu-te que desenvolvas um programa que continue a pedir a idade de um estudante até que o utilizador introduza um valor válido (um número inteiro positivo). O programa deve seguir os seguintes passos:
Requisitos:
- Pede ao utilizador para introduzir uma idade.
- Continua a pedir a idade enquanto o valor introduzido não for um número inteiro positivo.
- Quando for introduzida uma idade válida, imprime a idade e termina o programa.
Exemplo de Código:
# Pedir a idade até ser válido
idade = int(input("Introduz uma idade positiva: "))
while idade <= 0:
print("Idade inválida. Tenta novamente.")
idade = int(input("Introduz uma idade positiva: "))
print("A idade introduzida foi:", idade)