【发布时间】:2019-01-24 13:33:53
【问题描述】:
我有一个 Python 类的方法,旨在获得一个平均数:
def get_average_rating(self):
rated_books = 0
book_sum = 0
for book in self.books:
rated_books += 1
book_sum += self.books[book]
return book_sum/rated_books
但我收到错误消息:
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
我已经尝试解决这个问题好几天了,虽然价值通过了,但我收到了这个警报,并希望把它交付干净。我看到了很多相关的问题,[like this][1],但仍然无法理解。有人可以在这里发光吗?
提前致谢
【问题讨论】:
-
这意味着
self.books[book] == None,而不是您可能期望的整数。self.books的内容是什么? -
book_sum += self.books[book] 是问题所在。 “书”的内容是什么?您想将什么(“book”中的哪个变量)与 book_sum 相加?
-
meowgoesthedog, self.books[book] 应该检索与特定类相关联的字典上的键的值(“self”指系统上其图书列表(self .books)带有书名及其用户的评分)。
-
akhavro,在每个用户的书籍词典(self.books)中,book 指的是一个键值对。 self.books 的每一项都会迭代,直到所有书籍的评分都进行比较。 rated_books 是字典中的书籍数量(因此每处理一本书,它就加 1),而 book_sum 是所有评分的总和,将除以书籍数量得到平均评分。
-
你在哪里读到“书单”,请看“书词典”(避免混淆)