【问题标题】:Unsupported operand type on method方法上不支持的操作数类型
【发布时间】: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)带有书名及其用户的评分)。
  • akhavr​​o,在每个用户的书籍词典(self.books)中,book 指的是一个键值对。 self.books 的每一项都会迭代,直到所有书籍的评分都进行比较。 rated_books 是字典中的书籍数量(因此每处理一本书,它就加 1),而 book_sum 是所有评分的总和,将除以书籍数量得到平均评分。
  • 你在哪里读到“书单”,请看“书词典”(避免混淆)

标签: python types int operands


【解决方案1】:

当您尝试将 None 添加到 int 值时,您会收到该错误。在你的情况下,它正在发生在

book_sum += self.books[book]

我们知道bookself.books 中(因为我们在for 循环中),但self.books[book] 必须是None

【讨论】:

  • 谢谢大家。问题已解决。我可以找到 None 语句并解决它。谢谢!
  • 感谢您的洞察力。它帮助我找到了解决方案。就这样,价值真的是无。
猜你喜欢
  • 2020-06-09
  • 2021-08-17
  • 1970-01-01
  • 2020-06-18
  • 2017-07-15
  • 2020-02-29
  • 2011-03-08
相关资源
最近更新 更多