. Questão: Implemente uma função chamada ponto_extra que receba a porcentagem de participação de um aluno e a quantidade de questões respondidas em atividades da disciplina. A função deve calcular a bonificação extra do aluno de acordo com os seguintes critérios:
ponto extra: participação igual ou superior a 90 e a quantidade de questões respondidas for igual ou superior a 8; 0,5 ponto extra: participação igual ou superior a 75 e a quantidade de questões respondidas for igual ou superior a 5; caso contrário, não recebe bonificação. A função deve retornar o valor da bonificação.
Passo 1
O enunciado pede que seja implementada uma função chamada ponto_extra que receba duas informações e retorne a bonificação. Vou listar claramente o que é dado e o que é pedido:
- Entradas (dados fornecidos):
- porcentagem de participação do aluno: chamarei aqui de
(um número que representa porcentagem, por exemplo significa ); - quantidade de questões respondidas em atividades: chamarei aqui de
(um número inteiro, por exemplo ).
- porcentagem de participação do aluno: chamarei aqui de
- Saída (o que a função deve retornar):
- valor da bonificação extra do aluno (um número que pode ser
, ou ).
- valor da bonificação extra do aluno (um número que pode ser
- Critérios para a bonificação:
- retornar
ponto extra se e ; - retornar
ponto extra se e ; - caso contrário, retornar
.
- retornar
Passo 2
Entendendo a lógica e a ordem das checagens (por que a ordem importa):
- Existem dois níveis de bonificação, sendo
o maior e o menor. - Se primeiro testarmos apenas a condição menor (
e ), um aluno com e também satisfaziria a condição menor e então poderia ser classificado erroneamente como em vez de . - Portanto a regra prática é: testar primeiro a condição que dá a maior bonificação (
), e só se não passar nela testar a condição da bonificação menor ( ). Isso garante que um aluno que deva receber não fique “preso” na condição .
Passo 3
Expressando as condições em forma lógica (para implementar no código):
- Condição para
: . - Condição para
: . - Caso contrário: retorno
.
Aqui
significa “e” lógico (as duas partes precisam ser verdadeiras simultaneamente).
Passo 4
Decisão sobre detalhes de implementação:
- Retorno: usar números de ponto flutuante para as bonificações (por exemplo
, , ) é prático em código. - Não vamos transformar tipos automaticamente; assumimos que o chamador fornece
como número (int/float) e como int. Poder-se-ia acrescentar validação (por exemplo garantir que e ), mas o enunciado não exige validação, então implementaremos a função simples e direta. - Ordem das checagens: primeiro a condição de
, depois a de , por último retornar .
Passo 5
Pseudocódigo passo a passo (para entender antes do código real):
- Receber
e . - Se
e , retornar . - Senão, se
e , retornar . - Senão, retornar
.
Passo 6
Implementação em Python da função ponto_extra (essa função segue exatamente a lógica acima):
def ponto_extra(porcentagem, num_questoes):
"""
Retorna a bonificação extra conforme:
- 1.0 ponto se porcentagem >= 90 e num_questoes >= 8
- 0.5 ponto se porcentagem >= 75 e num_questoes >= 5
- 0.0 caso contrário
"""
if porcentagem >= 90 and num_questoes >= 8:
return 1.0
if porcentagem >= 75 and num_questoes >= 5:
return 0.5
return 0.0
Passo 7
Testes de exemplo (para você saber o que esperar ao rodar a função):
-
deve retornar . -
deve retornar (limite incluso). -
deve retornar (passa no segundo critério porque e ). -
deve retornar . -
deve retornar (porcentagem abaixo de ). -
deve retornar (questões abaixo de ).
Resposta
def ponto_extra(porcentagem, num_questoes):
"""
Retorna a bonificação extra conforme:
- 1.0 ponto se porcentagem >= 90 e num_questoes >= 8
- 0.5 ponto se porcentagem >= 75 e num_questoes >= 5
- 0.0 caso contrário
"""
if porcentagem >= 90 and num_questoes >= 8:
return 1.0
if porcentagem >= 75 and num_questoes >= 5:
return 0.5
return 0.0