Este material oferece um conjunto abrangente de exercícios para solidificar o entendimento sobre controle de fluxo em Python, abordando estruturas como condicionais (if, elif, else) e loops (while, for), além das instruções de controle (break, continue).
Parte 1: Testes de Múltipla Escolha (20 pontos)
Conceitos Fundamentais
-
Qual das seguintes opções cria um loop infinito?
- A.
for i in range(10): - B.
while True: - C.
for i in [1, 2, 3]: - D.
while x < 10:(assumindo que x é 0 inicialmente)
Resposta: B - A condição
Trueem um loopwhilenunca se tornará falsa, resultando em um loop infinito. - A.
-
Qual a saída do seguinte código? ```
x = 5 if x > 3: print("A") elif x > 2: print("B") else: print("C")
**Resposta: A** - A primeira condição `x > 3` é verdadeira, então "A" é impresso e o restante do bloco `if-elif-else` é ignorado. -
Qual é a função da instrução
break?- A. Pula as instruções restantes do loop atual e passa para a próxima iteração.
- B. Sai completamente do loop.
- C. Sai do programa.
- D. Pausa a execução do programa.
Resposta: B -
breakencerra a execução do loop imediatamente. -
Qual dos seguintes loops executará 3 vezes?
- A.
for i in range(3): - B.
for i in range(1, 3): - C.
for i in range(0, 3, 2): - D.
for i in range(3, 0):
Resposta: A -
range(3)gera a sequência 0, 1, 2, que resulta em 3 iterações. - A.
-
Em Python,
elifé uma abreviação para:- A.
else if - B.
else for - C.
else in - D.
else loop
Resposta: A -
elifé usado para encadear múltiplas condições. - A.
Análise de Código
-
Qual a saída do seguinte código? ```
total = 0 for i in range(1, 6): if i % 2 == 0: continue total += i print(total)
**Resposta: B** - O loop itera com i = 1, 2, 3, 4, 5. `continue` pula os números pares (2 e 4). O total acumula 1 + 3 + 5 = 9. -
Qual o valor de
countapós a execução do código abaixo? ```count = 0 while count < 5: count += 1 if count == 3: break
**Resposta: B** - `count` se torna 1, depois 2, e então 3. No momento em que `count` é 3, o `break` é acionado, encerrando o loop. -
Qual expressão condicional retornará
True?- A.
5 < 3 and 2 > 1 - B.
not (4 == 4) - C.
3 >= 3 or 5 < 2 - D.
2 != 2
Resposta: C -
3 >= 3éTrue. Em uma operaçãoor, se uma das condições forTrue, o resultado éTrue. - A.
Aplicação Prática
-
Para imprimir os números de 1 a 10, mas pular o número 5, qual estrutura de loop deve ser usada? ```
for i in range(1, 11): if i == 5: __________ print(i)
**Resposta: B** - `continue` pula a iteração atual quando `i` é 5, sem sair do loop. -
Qual a funcionalidade do código abaixo? ```
number = 7 is_prime = True for i in range(2, number): if number % i == 0: is_prime = False break
**Resposta: B** - O código verifica se o número 7 é divisível por qualquer número de 2 até 6. Se for, não é primo.
Parte 2: Testes de Verdadeiro ou Falso (10 pontos)
- A instrução
ifpode existir sem uma cláusulaelse, mas uma cláusulaelsedeve sempre ter uma instruçãoifcorrespondente. (Verdadeiro) - Um loop
whileexecuta o corpo do loop pelo menos uma vez, independentemente da condição ser verdadeira ou falsa. (Falso) - O corpo só executa se a condição for verdadeira inicialmente. - Após usar
breakem um loopfor, a cláusulaelseassociada a esse loop não será executada. (Verdadeiro) range(5)gera uma sequência de inteiros de 0 a 4, totalizando 5 números. (Verdadeiro)- Na expressão ternária
x = a if condition else b, se a condição for verdadeira, o valor dexseráb. (Falso) - Se a condição for verdadeira,xreceberá o valor dea.
Parte 3: Preenchimento de Lacunas (30 pontos)
Exercício 1: Jogo de Adivinhação de Números
import random
print("🎮 Jogo de Adivinhação")
secret = random.randint(1, 50)
attempts = 0
max_attempts = 7
print(f"Pensei em um número entre 1 e 50. Você tem {max_attempts} chances!")
while attempts < max_attempts: # Preenchimento 1: Condição do loop
try:
guess = int(input(f"\nTentativa {attempts + 1}: "))
except ValueError:
print("Por favor, insira um número válido!")
continue # Preenchimento 2: Pula esta iteração
attempts += 1
if guess < secret:
print("Muito baixo!")
elif guess > secret: # Preenchimento 3: Condição de comparação
print("Muito alto!")
else:
print(f"🎉 Parabéns! Você adivinhou o número {secret} na tentativa {attempts}!")
break # Preenchimento 4: Sai do loop
remaining = max_attempts - attempts
if remaining > 0:
print(f"💡 Dica: Você tem {remaining} chances restantes.")
# Verifica se o jogador perdeu
if attempts == max_attempts and guess != secret: # Preenchimento 5: Condição de falha
print(f"\n😔 Que pena, suas chances acabaram!")
print(f"O número correto era: {secret}")
Exercício 2: Classificador de Notas
print("📊 Sistema de Classificação de Notas")
print("=" * 30)
while True:
score_input = input("Digite a nota (0-100), ou 'q' para sair: ")
if score_input.lower() == 'q':
print("Obrigado por usar o sistema. Até logo!")
break # Preenchimento 6: Sai do loop
try:
score = float(score_input)
except ValueError:
print("⚠️ Por favor, insira um valor numérico válido!")
continue # Preenchimento 7: Continua para a próxima iteração
# Validação do intervalo da nota
if score < 0 or score > 100: # Preenchimento 8: Operador lógico
print("⚠️ A nota deve estar entre 0 e 100!")
continue
# Determinação da classificação
if score >= 90:
grade = "A"
comment = "Excelente"
elif score >= 80: # Preenchimento 9: Múltiplas condições
grade = "B"
comment = "Muito Bom"
elif score >= 70:
grade = "C"
comment = "Bom"
elif score >= 60:
grade = "D"
comment = "Satisfatório"
else: # Preenchimento 10: Outros casos
grade = "F"
comment = "Insatisfatório"
print(f"Nota: {score:.2f} → Classificação: {grade} ({comment})")
print("-" * 30)
Parte 4: Prática de Programação (40 pontos)
Exercício 1: Imprimir Padrão
Objetivo: Usar loops aninhados para imprimir um triângulo retângulo de asteriscos.
num_linhas = int(input("Digite o número de linhas: "))
for i in range(1, num_linhas + 1):
for j in range(i):
print("*", end="")
print()
Exercício 2: Calculadora Simples
Objetivo: Criar uma calculadora que suporta operações contínuas e tratamento de erros.
print("=== Calculadora Simples ===")
while True:
expressao = input("Digite a expressão (ex: 3 + 4), ou 'q' para sair: ")
if expressao.lower() == 'q':
print("Obrigado por usar a calculadora!")
break
try:
partes = expressao.split()
if len(partes) != 3:
print("Formato inválido. Use o formato: número operador número.")
continue
num1 = float(partes[0])
operador = partes[1]
num2 = float(partes[2])
resultado = None
if operador == '+':
resultado = num1 + num2
elif operador == '-':
resultado = num1 - num2
elif operador == '*':
resultado = num1 * num2
elif operador == '/':
if num2 == 0:
print("Erro: Divisão por zero não é permitida!")
continue
resultado = num1 / num2
else:
print("Operador inválido. Use +, -, *, ou /.")
continue
print(f"Resultado: {resultado}")
except ValueError:
print("Erro: Certifique-se de que os números são válidos.")
except Exception as e:
print(f"Ocorreu um erro inesperado: {e}")
Exercício 3: Números de Armstrong
Objetivo: Encontrar todos os números de Armstrong de 3 dígitos.
numeros_armstrong = []
for num in range(100, 1000):
# Extrai os dígitos
centena = num // 100
dezena = (num // 10) % 10
unidade = num % 10
# Calcula a soma dos cubos dos dígitos
soma_cubos = centena**3 + dezena**3 + unidade**3
# Verifica se é um número de Armstrong
if num == soma_cubos:
numeros_armstrong.append(num)
print("Os números de Armstrong de 3 dígitos são:", numeros_armstrong)
Parte 5: Design Integrado (20 pontos)
Projeto: Sistema de Gerenciamento de Notas de Alunos
Funcionalidades:
- Menu principal com opções.
- Entrada de dados de alunos (nome e notas de várias disciplinas).
- Consulta de notas e média por nome.
- Estatísticas gerais (média da turma, maior/menor nota).
- Análise de distribuição de notas por faixas.
- Saída do sistema.
Estrutura de dados sugerida: Lista de dicionários.
# Exemplo de estrutura de dados
alunos = [
{
"nome": "Ana Silva",
"notas": [85, 92, 78],
"media": 85.0
},
{
"nome": "Bruno Costa",
"notas": [70, 65, 88],
"media": 74.33
}
]
# O sistema completo envolveria loops, condicionais e funções para implementar as opções do menu.
# Por exemplo, a opção de adicionar aluno usaria input() e append() em uma lista.
# A consulta usaria um loop para encontrar o nome e calcular/exibir a média.
# As estatísticas envolveriam loops e funções de agregação (sum, max, min).
Este conjunto de exercícios abrange desde conceitos básicos até a aplicação prática de controle de fluxo, preparando o terreno para tópicos mais avançados.