0

私は本のリストとユーザーからの本の評価のリストを持っています。

[User1,2,1,3,6] ..
[User2,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 に答える