15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

self._grades[name] = []

def report_grade(self, name, score):

self._grades[name].append(score)

def average_grade(self, name):

grades = self._grades[name]

return sum(grades) / len(grades)

Usar a classe é muito simples.

book = SimpleGradebook()

book.add_student('Isaac Newton')

book.report_grade('Isaac Newton', 90)

# ...

print(book.average_grade('Isaac Newton'))

>>>

90.0

Os dicionários são tão fáceis de usar que existe o risco de estendê-los demais e

escrever um código frágil. Por exemplo, digamos que se queira estender a classe

SimpleGradebook para manter uma lista de notas por matéria, e não apenas a

média final do estudante. Podemos fazê-lo alterando o dicionário _grades para

relacionar os nomes dos estudantes (as chaves) a outro dicionário (os valores). O

dicionário mais interno relaciona cada matéria (as chaves) a uma nota (os

valores).

class BySubjectGradebook(object):

def __init__(self):

self._grades = {}

def add_student(self, name):

self._grades[name] = {}

Parece bastante direto. Todavia, os métodos report_grade and average_grade

ganharão uma pitada de complexidade para lidar com o dicionário

tridimensional, mas, por enquanto, ainda é possível entendê-lo.

def report_grade(self, name, subject, grade):

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!