O que torna esse desafio interessante é justamente a combinação entre a estrutura de dados e a lógica condicional que eu preciso implementar. Dentro do loop, eu acesso cada média pela sua posição e verifico se ao somar um ponto o resultado não ultrapassaria dez pontos. Se ultrapassar, eu coloco dez no lugar daquela média, caso contrário deixo a soma acontecer normalmente. Dessa forma consigo garantir que todas as notas respeitem o limite estabelecido enquanto aplico a bonificação de forma justa a quem precisa.
# Listas de alunos e suas médias atuais
lista_de_nomes = ["Maria Silva", "João Santos", "Ana Oliveira", "Pedro Costa", "Juliana Pereira"]
lista_de_medias = [8.9, 7.5, 4.2, 1.4, 9.5]
print("=" * 60)
print("AJUSTE DE MÉDIAS COM BONIFICAÇÃO")
print("=" * 60)
print("\n Médias originais:")
indice = 0
while indice < len(lista_de_medias):
print(f"{lista_de_nomes[indice]}: {lista_de_medias[indice]}")
indice += 1
# Aplicando a bonificação de 1 ponto, respeitando o limite máximo de 10
print("\n Processando bonificação de 1 ponto para cada aluno...")
indice = 0
while indice < len(lista_de_medias):
media_anterior = lista_de_medias[indice]
media_com_bonus = media_anterior + 1
# Verificação: se a soma ultrapassar 10, limitar a 10
if media_com_bonus > 10:
lista_de_medias[indice] = 10
else:
lista_de_medias[indice] = media_com_bonus
indice += 1
print("\n Médias após bonificação:")
indice = 0
while indice < len(lista_de_medias):
print(f"{lista_de_nomes[indice]}: {lista_de_medias[indice]}")
indice += 1
# Análise de aprovação
print("\n Resultado final (aprovação com média ≥ 5.0):")
indice = 0
while indice < len(lista_de_nomes):
media_final = lista_de_medias[indice]
nome = lista_de_nomes[indice]
if media_final >= 5.0:
situacao = "APROVADO"
else:
situacao = "REPROVADO"
print(f"{nome}: {media_final} - {situacao}")
indice += 1
print("\n" + "=" * 60)