Gostaria de saber se eu poderia melhorar algo nesse mini projetinho que eu fiz envolvendo as 3 aulas vistas.
from random import uniform
from faker import Faker
fake = Faker()
def criar_atletas():
atletas = int(input('Digite o número de atletas: '))
atl = [fake.name() for _ in range(1, atletas + 1)]
return atl
def criar_lista(lista_atletas):
lista_notas = []
for _ in lista_atletas:
notas = []
for _ in range(1,6):
notas.append(round(uniform(0,10),2))
lista_notas.append(notas)
return sorted(lista_notas)
def notas(lista_notas):
lista_medias = []
for lista in lista_notas:
lista.remove(max(lista))
lista.remove(min(lista))
media = round(sum(lista) / len(lista),2)
lista_medias.append(media)
return lista_medias
def situacao(lista_medias):
lista_situacoes = []
situacao = ['Próxima fase' if media >= 7.0 else 'Eliminado' for media in lista_medias]
lista_situacoes.extend(situacao)
return lista_situacoes
def listar_atletas_classificados(lista_atletas, lista_medias, lista_situacao):
lista_todos_resultados = []
for atleta, media, sit in zip(lista_atletas, lista_medias, lista_situacao):
print(f'Atleta {atleta} - Nota da manobra: {media} - Situação: {sit}')
lista_todos_resultados.append((atleta,media,sit))
atletas_classificados = [tupla[0] for tupla in lista_todos_resultados if tupla[1] >= 7.0]
return atletas_classificados
def atleta_vencedor(lista_classificados):
lista_notas = criar_lista(lista_classificados)
medias = notas(lista_notas)
maior_media = 0
melhores_notas = []
for i in range(len(lista_classificados)):
print(f'Atleta {lista_classificados[i]} - Nota da manobra: {medias[i]}')
if medias[i] > maior_media:
maior_media = medias[i]
vencedor = lista_classificados[i]
melhores_notas.clear()
melhores_notas.extend(lista_notas[i])
return(vencedor,maior_media,melhores_notas)
def main():
atleta = criar_atletas() #LISTA DE ATLETAS
lista_notas = criar_lista(atleta) #LISTA DE LISTA DE NOTAS
medias = notas(lista_notas) #LISTA DE MEDIAS
sit = situacao(medias) #LISTA DE SITUACOES
classificados = listar_atletas_classificados(atleta,medias,sit)
nomes_formatados = ', '.join(classificados)
if not classificados:
print('\nNenhum atleta classificado para a próxima fase.')
elif len(classificados) == 1:
print('\n-----------------------------------------------------------------------------------------')
print(f'Como apenas um atleta passou para a próxima fase, o vencedor foi: {nomes_formatados} ')
print('-----------------------------------------------------------------------------------------')
else:
print(f'\nAtletas classificados: {nomes_formatados}\n')
print('---------------------------------------------')
venceu, media, melhor_nota = atleta_vencedor(classificados)
print('---------------------------------------------')
print(f'\nO vencedor foi {venceu} com uma média de {media} pontos. Notas: {melhor_nota}')
if __name__ == "__main__":
main()