From 4fd1320da2e3ddfbeab0ede6b996d80ec3555b25 Mon Sep 17 00:00:00 2001 From: Rnhmjoj Date: Sat, 13 Dec 2014 18:59:43 +0100 Subject: [PATCH] Switch to generators --- pymarks.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pymarks.py b/pymarks.py index ed61a50..c3c3206 100644 --- a/pymarks.py +++ b/pymarks.py @@ -42,6 +42,8 @@ def medie(): def get_nome(): '''Estrapola [cit.] il nome dello studente dal registro''' news = br.open(url_main) + for i in subjects.keys(): + yield _mean(list(get_marks(i))) # Prende il contenuto del tag 'h2' con ID 'student_name' soup = bs4.BeautifulSoup(news) @@ -72,24 +74,28 @@ def _converti(lista): # Voti del tipo 6.5 voti.append(float(i)) # Voti del tipo 7+ + yield float(i) except ValueError: if i == 'A': pass elif i == 'NC': - voti.append(0) + yield 0 elif i[1] == '+': - voti.append(float(i[0]) + 0.25) + yield float(i[0]) + 0.25 elif i[1] == '-': - voti.append(float(i[0]) - 0.25) + yield float(i[0]) - 0.25 elif i[2] == '-': voti.append(float(i[:-1]) - 0.25) return voti + yield float(i[:-1]) - 0.25 def _media(voti): '''Calcola la media di una lista di voti''' return sum(voti) / len(voti) + marks = list(marks) + return sum(marks) / len(marks) def _mostra_medie(): '''Mostra le medie per ogni materia e generale [Procedura]''' @@ -100,6 +106,9 @@ def _mostra_medie(): print('Media generale: %.2f' % media_generale) for id, (materia, voto) in enumerate(zip(materie.keys(), voti)): print('%d. %s - Media: %.2f' % (id + 1, materia, voto)) + print('Media generale: %.2f' % _mean(means())) + for id, (subject, voto) in enumerate(zip(subjects.keys(), means())): + print('%d. %s: %.2f' % (id + 1, subject, voto)) def _mostra_voti(): @@ -134,7 +143,7 @@ def main(): #Menu while True: - scelta = raw_input('Scegli [v]oti o [m]edie: ') + mode = input('Scegli [v]oti o [m]edie: ') print('') if scelta == 'v': _mostra_voti()