
srav
Pro Student 3,473 Pointsneed help with Dice Challenge
I am getting an error message 'Didn't get correct total for Hand.total'. When I create an instance of Hand and call .total seems to return correct value. Can some 1 help ?
import random
class Die:
def __init__(self, sides=2):
if sides < 2:
raise ValueError("Can't have fewer than two sides")
self.sides = sides
self.value = random.randint(1, sides)
def __int__(self):
return self.value
def __add__(self, other):
return int(self) + other
def __radd__(self, other):
return self + other
class D20(Die):
def __init__(self, *args, **kwargs):
super().__init__(sides = 20)
from dice import D20
class Hand(list):
dies = []
def __init__(self, *args, **kwargs):
pass
def __len__(self):
return len(self.dies)
def __iadd__(self, other):
return int(self) + other
@classmethod
def roll(cls, number):
hand = Hand()
for i in range(number):
hand.dies.append(D20())
return hand
@property
def total(self):
return sum(self)
def __iter__(self):
for die in self.dies:
yield die
2 Answers

Clayton Perszyk
Treehouse Moderator 45,651 PointsI pasted your code into challenge and it passed.

srav
Pro Student 3,473 PointsI typed in the same code. It didn't work. I pasted the same again and it accepted it. Its little weird to me. But thanks for looking into !!