0

我有一个书单和用户对该书的评分列表。

[用户1,2,1,3,6]..
[用户2,4,1,4 2]..

[Book1,Book2,Book3,Book4]
评分从 (1-4)

例如,如果书 1 是“教皇”
,则该书的排名为 [3,3,3,2]
,打印输出为教皇 [3,3,3,2] []

使用类

这是我班级的布置。

class Book(object):
      booktotal=0
      accept=[]
      def __init__(self, Title= " ", Rating=()):
          self.scale=[1,2,3,4]
          self.book = Title
          self.rating= Rating
          self.accept=[]
          book.population +=1
      def AddRating(self,rating):
          if rating in self.scale:
              accepted.append(rating)
          else:
              pass

          return self.accept

      def Average(self):
          Avg=sum[accept]/3

      def __str__(self):
          return '{0} - {1} - {2}'.format(self.book, self.rating,self.accept)

我如何让它打印出平均和评论数量

4

1 回答 1

4

你所拥有的东西可以大大减少。

  • population没有在任何地方定义。所以这是一个错误。
  • 你的平均计算是错误的。它只需要在__str__方法中计算。
  • 使用该len函数获取列表中元素的数量。

    class Book(object):               
      scale=(1,5)
    
      def __init__(self, title):        
          self.title = title
          self.ratings = []
    
      def rate(self,rating):
          if rating in range(self.scale[0]-1, self.scale[1]+1):
              self.ratings.append(rating)
    
      def __str__(self):
          return '"{0}" rates an average of {1} from {2} reviews.'.format(
             self.title, sum(self.ratings)/float(len(self.ratings)), len(self.ratings))
    
    >> mybook = Book('Zen of Python')
    >> mybook.rate(5)
    >> mybook.rate(3)
    >> mybook.rate(5)
    >> str(mybook)
    >> "Zen of Python" rate an average of 4.333333333 from 3 reviews.
    
于 2012-11-05T01:25:38.717 回答