0
respostas

[Projeto] Desafio de Manipulação de Listas em Python

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)