Desenvolva uma função que receba uma lista com quatro notas e retorne a média final. Caso a média seja igual ou superior a 7, apresentar a mensagem “APROVADO”; caso a média seja menor que 7 e maior ou igual a 4, apresentar a mensagem “PROVA FINAL”, e caso a média seja menor que 4, apresentar a mensagem “REPROVADO”.
Passo 1
O enunciado pede que a gente crie uma função que receba uma lista com
notas e retorne a média final. Além disso, com base nessa média, a função deve apresentar uma mensagem conforme as regras:
- Se a média for maior ou igual a
, a mensagem deve ser “APROVADO”. - Se a média for menor que
e maior ou igual a , a mensagem deve ser “PROVA FINAL”. - Se a média for menor que
, a mensagem deve ser “REPROVADO”.
Informações relevantes dadas:
- A entrada é uma lista contendo exatamente
valores numéricos (as notas). - A saída exigida inclui a média final e a apresentação da mensagem correspondente ao intervalo da média.
- As fronteiras importantes são os números
e .
Passo 2
Entender como calcular a média de
notas (a parte matemática simples que precisamos dominar).
A fórmula da média aritmética de quatro notas
é:
Explicando: somamos as quatro notas e dividimos o total por
. Cada
representa uma nota (pode ser decimal). Essa operação dá um número que é a média simples — o que queremos comparar com
e
.
Passo 3
Como decidir a mensagem a partir da média — lógica de comparação (controle de fluxo).
Precisamos testar a média em três casos mutuamente exclusivos e cobrir todas as possibilidades:
- Se
: mensagem “APROVADO”. - Senão, se
(ou seja, ): mensagem “PROVA FINAL”. - Senão (ou seja,
): mensagem “REPROVADO”.
Por que nessa ordem? Porque a verificação de
captura os casos de aprovação; se falharmos nessa verificação, testar
garante que estamos lidando apenas com médias menores que
, então a segunda condição identifica o intervalo do meio. Se nenhuma das duas for verdadeira, sobra o caso de reprovação.
Passo 4
Especificação da função (o que ela deve receber e retornar) e decisões de implementação.
Decidimos que a função:
- Recebe um único parâmetro, uma lista chamada, por exemplo, de notas contendo exatamente
números. - Calcula a média usando a fórmula do Passo 2.
- Determina a mensagem seguindo a lógica do Passo 3.
- Retorna dois valores: a média (um número) e a mensagem (string). Retornar ambos é útil na prova: a média permite conferência numérica e a mensagem é a saída textual exigida.
Também faremos checagens simples:
- Verificar se a lista tem exatamente
elementos; caso contrário, podemos lançar um erro (ou retornar mensagem de erro). - Verificar se todos os elementos são numéricos; caso contrário, lançar erro.
Passo 5
Pseudocódigo passo a passo para implementar a função (versão mastigada, você pode copiar para a prova mentalmente):
- Receber a lista
. - Se o tamanho de
não for , sinalizar erro (por exemplo, lançar exceção). - Calcular
. - Calcular
. - Se
, então mensagem = “APROVADO”. - Senão, se
, então mensagem = “PROVA FINAL”. - Senão, mensagem = “REPROVADO”.
- Retornar
e mensagem.
Passo 6
Implementação em Python (explicando cada linha pra você replicar com calma na prova, se pedir pseudocódigo ou código):
- A ideia é usar funções e estruturas condicionais simples: soma, divisão e if / elif / else.
- Ao calcular a média, usamos divisão normal; se quiser, podemos arredondar (por exemplo, duas casas decimais) com a função apropriada, mas a especificação não exige arredondamento.
Na prova, se pedirem só o algoritmo, o pseudocódigo do Passo 5 já basta. Se pedirem implementação, o código abaixo é uma boa resposta prática.
Passo 7
Exemplos manuais para fixar (faça na caneta e papel ou mentalmente):
Exemplo A: notas
- Soma:
. - Média:
. - Como
, mensagem = “APROVADO”.
Exemplo B: notas
- Soma:
. - Média:
. -
e , então mensagem = “PROVA FINAL”.
Exemplo C: notas
- Soma:
. - Média:
. -
, então mensagem = “REPROVADO”.
Fazendo esses exemplos você fixa a ordem das condições e como a média é calculada.
Passo 8
Observações finais e dicas de prova (motivação e lembretes práticos):
- Lembre-se sempre de checar se a entrada tem
elementos; isso evita erros bobos na prova. - A ordem das condições é importante: verifique primeiro a condição mais restritiva (
), depois a do meio ( ), e por fim o caso restante. - Se a prova pedir apenas a lógica ou o fluxograma, use o pseudocódigo do Passo 5.
- Você consegue! Respira, faz um exemplo com números e repete a lógica: soma, divide, compara — é sempre a mesma sequência.
Resposta
def media_final(notas):
"""
Recebe uma lista 'notas' com exatamente 4 valores numéricos.
Retorna uma tupla (media, status) onde 'media' é a média aritmética
das 4 notas e 'status' é uma string: "APROVADO", "PROVA FINAL" ou "REPROVADO".
"""
if not isinstance(notas, (list, tuple)):
raise TypeError("Entrada deve ser uma lista ou tupla com 4 notas.")
if len(notas) != 4:
raise ValueError("A lista deve conter exatamente 4 notas.")
try:
soma = float(notas[0]) + float(notas[1]) + float(notas[2]) + float(notas[3])
except (TypeError, ValueError):
raise ValueError("Todos os elementos da lista devem ser números.")
media = soma / 4.0
if media >= 7.0:
status = "APROVADO"
elif media >= 4.0:
status = "PROVA FINAL"
else:
status = "REPROVADO"
return media, status