Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialEDWIN MAZENGERA
1,916 Pointsdice question: We're playing a popular board game about snatching up real estate in Atlantic City. I need you finish out
We're playing a popular board game about snatching up real estate in Atlantic City. I need you finish out the CapitalismHand class. First off, make sure it always rolls two D6s.
please help im stuck here, cant get what to do
from dice import D6
class Hand(list):
def __init__(self, size=0, die_class=None, *args, **kwargs):
if not die_class:
raise ValueError("You must provide a die class")
super().__init__()
for _ in range(size):
self.append(die_class())
self.sort()
def _by_value(self, value):
dice = []
for die in self:
if die == value:
dice.append(die)
return dice
class CapitalismHand(Hand):
def score_sixes(self, hand):
return hand.sixes
@property
def ones(self):
return self._by_value(1)
@property
def twos(self):
return self._by_value(2)
@property
def threes(self):
return self._by_value(3)
@property
def fours(self):
return self._by_value(4)
@property
def fives(self):
return self._by_value(5)
@property
def sixes(self):
return self._by_value(6)
@property
def _sets(self):
return {
1: len(self.ones),
2: len(self.twos),
3: len(self.threes),
4: len(self.fours),
5: len(self.fives),
6: len(self.sixes)
}
3 Answers
Chris Freeman
Treehouse Moderator 68,457 PointsFor the CapitalismHand
to "always roll two D6
s", it must always initialize its hand in the correct manner of two instances of the D6 class. This can be done with a custom __init__
method. Define an __init__
method that:
- calls the
__init__
method of the parent class. Usesuper()
to accomplish this - set the argument for the parents
__init__
method to include the number of die (2) and the die_class (D6)
Post back if you need more help. Good luck!!
Iain Watson
3,031 Pointsreturn self[0] == self[1]
tanson tanyanyiwa
4,206 PointsI am stuck gyz!!!!
prateekparekh
12,895 Pointsprateekparekh
12,895 PointsI have a question about the following challenge where we have to define a new method doubles(). Can you elaborate on how exactly we can ensure that both dices have the same value? Does it take more than one argument? How can I reference the individual dices for comparison? Use a set and check for length > 1 to conclude that they have different values?
Edit: Noticed that I used set.add(die) instead of my_set.add(die)
Andrii Gorokh
14,809 PointsAndrii Gorokh
14,809 Points@Chris Freeman
trying this - doesn't work
Chris Freeman
Treehouse Moderator 68,457 PointsChris Freeman
Treehouse Moderator 68,457 Pointsprateekparekh, the parent class is a list, therefore you can reference race die as a list item:
self[0] == self[1]
. You don’t need an argument since you have access to the values throughself
.Chris Freeman
Treehouse Moderator 68,457 PointsChris Freeman
Treehouse Moderator 68,457 PointsAndrii Gorokhovskyi, you are very close!! There are two errors:
super().__init__()
is missing the underscores*args
parameter is missing the asterisk. It fails because without the asterisk, it becomes a required positional argument but the checker doesn’t provide one. It will also pass if you remove the*args, **kwargs
.Post back if you need more help. Good luck!!!