Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Exercitando
Exercício 1 (Desafio)
ATENÇÃO: Para execução do exercício é necessário que você abra uma nova aba (nomeie como alunos.tx) no Editor Trinket abaixo, copie e cole os dados apresentados, a seguir. Após feito isso, retorne a aba main.py e desenvolva a solução do problema descrito abaixo. Para abrir uma nova aba no trinket aperte o símbolo de "+" no canto superior direito do editor.
Amanda,4.00
Ana,7.00
Bernardo,9.00
Clarisse,5.50
Cristina,3.90
Danilo,8.40
Emilia,10.0
Fernando,7.00
Gilda,6.50
Hugo,2.0
Ilan,2.6
Janio,4.9
Larissa,7.6
Maria,8.4
Neto,6.5
Otavio,4.7
Patricia,6.7
Roberto,7.8
Sergio,3.8
Tatiana,5.9
Ulisses,1.2
Valeria,9.6
Zenon,4.3
Faça um programa que leia os dados armazenados no arquivo: alunos.txt. Crie um dicionário (nome:nota) com as informações lidas. A seguir, calcule e exiba a média geral da turma; maior nota da turma, com respectivo nome do aluno; menor nota com respectivo nome do aluno e, por fim, imprima o nome e a nota dos alunos que tiveram a nota maior que a média da turma.
Dica1: crie duas listas e armazene as informações de nomes e notas, uma em cada lista e, a partir daí, crie o dicionário usando a função zip. Utilize a função split com delimiter = ',' para quebrar as linhas do arquivos em nome e nota.
Solução
soma = lambda x:sum([float(z) for z in x.values() ])
maior = lambda x:max([(float(z[1]),z[0]) for z in x.items() ])
menor = lambda x:min([(float(z[1]),z[0]) for z in x.items() ])
compara = lambda al, md:[(x[0],x[1]) for x in al.items() if float(x[1]) > md]
f = open('alunos.txt','r')
delimiter = ','
x = {}
nomes=[]
notas=[]
for linha in f:
nomes.append((linha.replace("\n","")).split(delimiter)[0])
notas.append((linha.replace("\n","")).split(delimiter)[1])
alunos = dict(zip(nomes,notas))
print(alunos)
s = soma(alunos)
mediageral = s / len(alunos)
mx = maior(alunos)
mn = menor(alunos)
acima = compara(alunos,mediageral)
print('Média Turma: {0:.2f}'.format(mediageral))
print('Maior Média: {0:.2f} Aluno: {1}'.format(mx[0],mx[1]))
print('Menor Média: {0:.2f} Aluno: {1}'.format(mn[0],mn[1]))
print('Alunos com as médias acima Media da Turma')
print(' Aluno Média')
for i in acima:
print(' ',i[0], ' '*(20-len(i[0])), i[1])