4.2: Ciclo while em Python

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 while em Python.
  • Aprender a usar o while para repetir tarefas enquanto uma condição for verdadeira.
  • Explorar exemplos práticos do ciclo while em 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:

  1. Pede ao utilizador para introduzir uma idade.
  2. Continua a pedir a idade enquanto o valor introduzido não for um número inteiro positivo.
  3. 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)
      
    
<< 4.1: Ciclo for em Python Índice 4.3: Comparar Ciclos e Al... >>