Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Exercicios 5

Aplicando a projetos
5. Você foi contratado(a) como cientista de dados de uma associação de skate. Para analisar as notas recebidas de skatistas em algumas competições ao longo do ano, você precisa criar um código que calcula a pontuação dos(as) atletas. Para isso, o seu código deve receber 5 notas digitadas pelas pessoas juradas.
Para calcular a pontuação de um(a) skatista, você precisa eliminar a maior e a menor pontuação dentre as 5 notas e tirar a média das 3 notas que sobraram. Retorne a média para apresentar o texto:
"Nota da manobra: [media]"

n1 = float(input('Informe a primeira nota: '))
n2 = float(input('Informe a segunda nota: '))
n3 = float(input('Informe a terceira nota: '))
n4 = float(input('Informe a quarta nota: '))
n5 = float(input('Informe a quinta nota: '))

notas = [n1,n2,n3,n4,n5]
def media(notas):


  maior_nota = max(notas)
  menor_nota = min(notas)

  notas.remove(maior_nota)
  notas.remove(menor_nota)

  media = sum(notas)/ len(notas)
  return media

media = media(notas)
print(f"Nota da manobra: {media}")

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi Valentina, tudo bem? 😊

Seu código está quase lá e a lógica para calcular a média das notas está correta! 👍

A questão é que a função media modifica a lista notas original ao remover os elementos. Quando você chama a função novamente, ela tenta remover elementos de uma lista que já foi alterada.

Para resolver isso, você pode criar uma cópia da lista dentro da função media ou calcular a média sem modificar a lista original.

Veja uma forma de fazer isso:

n1 = float(input('Informe a primeira nota: '))
n2 = float(input('Informe a segunda nota: '))
n3 = float(input('Informe a terceira nota: '))
n4 = float(input('Informe a quarta nota: '))
n5 = float(input('Informe a quinta nota: '))

notas = [n1, n2, n3, n4, n5]

def calcular_media_skate(lista_notas):
  # Cria uma cópia da lista para não modificar a original
  notas_ordenadas = sorted(lista_notas)
  # Remove a menor e a maior nota da cópia
  notas_para_media = notas_ordenadas[1:-1]
  # Calcula a média das notas restantes
  media = sum(notas_para_media) / len(notas_para_media)
  return media

media_final = calcular_media_skate(notas)
print(f"Nota da manobra: {media_final}")

Nesta versão, sorted(lista_notas) cria uma nova lista com as notas ordenadas. Em seguida, notas_ordenadas[1:-1] seleciona todas as notas, exceto a primeira (menor) e a última (maior). Assim, a lista original notas permanece intacta. 💪

🎓 Para saber mais:

Continue praticando e explorando! 💻