RE: Python lists and Math

  • From: BlueScale <bluescale1976@xxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Sun, 19 Oct 2008 11:51:27 -0400

Thanks, it works.  I put the [0] in the wrong place before.  I didn't
quite understand what you said is wrong with my dice class.  "the way
you have done it is going to make it difficult to get results or lock
dice if you need to so they don't roll" If I didn't need the dice to
roll wouldn't I just reduce the number of dice rolled?  Also, the line
of code you helped me with gets the results and adds them to the score?
I must be missing something somewhere *grin*
I would like to make a good dice class that won't come back and cause a
lot of problems later when I start writing some games.  The first one is
going to be a dice game called pig where the object is to be the first
to get a score of 100.  It uses 1 six-sided die.  It should be simple
enough, but I want to be able to use the same dice class in other games
with more dice, and to be able to use the same class for something like
a D'N'D game too.  So, I am planning on adding set and get sides
methods.
Thanks for the help.

On Sun, 2008-10-19 at 10:23 -0500, Ken Perry wrote:
>  
>  
> Well this is not the way I would code it.  In fact the way I did it
> was to create a die class that did everything a single die should do.
> Then I put that class in a DiceBox or DiceSet class that would create
> how many dice you want.  the way you have done it is going to make it
> difficult to get results or lock dice if you need to so they don't
> roll.  With that said I was write there was really only one line that
> was wrong in your code.  You are returning a list of die or in this
> case a list of 1 die so you have to access it as you would a list.
> The line you need to change is.
>  
> score += int(cast)
> 
> It will work if you do
>  
> score +=cast[0]
>  
> Then if you later change the amount of die your rolling to lets say 6
> then you could do something like
>  
> for i in range (0 ,7):
>   score+=cast[i]
>  
> To get the total.
>  
> Ken
>  
> Ken
> 
> 
>  
> 
> 
> 
> 
> ______________________________________________________________________
> From: programmingblind-bounce@xxxxxxxxxxxxx
> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of BlueScale
> Sent: Sunday, October 19, 2008 8:37 AM
> To: programmingblind@xxxxxxxxxxxxx
> Subject: RE: Python lists and Math
> 
> 
> 
> 
> Hi,
> I didn't get it to work.  Classes and OO in general have always given
> me problems.  After working with Python a little, I have gotten
> somewhat better but not much.  I did this in two files to get some
> practise with import.  Import works fine, but I may have gone about
> the class thing completely wrong.  My code has changed slightly from
> what I posted earlier.  So, here's my code for each file:
> #dice.py
> class dice:
> def __init__(self,numDice):
>   self.numDice = numDice
> 
> def roll(self):
>   import random
>   die = []
>   x = 0
>   while x < self.numDice:
>    die.append(random.randint(1,6))
>    x += 1
>   return die
> 
> #dice-test.py
> #!/usr/bin/python
> import dice
> score = 0
> roll = dice.dice(1)
> cast = roll.roll()
> score += int(cast)
> print score
> 
> 
> 
> 
> 
> On Sun, 2008-10-19 at 08:15 -0500, Ken Perry wrote: 
> 
> > You didn't exactly send enough of the code for someone to answer
> > this if they had not ran into the problem.  I actually just wrote a
> > dice class recently for a project I am working on.  I am betting
> > because of the error message you got the roll is a list if this is
> > the case its probably a list of your dice so what you should have
> > had was 
> > score=roll[i].roll(6) 
> > i being the number of the die you want to roll for example if you
> > have a list of 5 dice for a game like Yahtzee you could do something
> > like 
> > for i in range (0,5): 
> >   score+=roll[i].roll(6)  
> > If you can't get it to work let me know I can take your code and fix
> > it probably in a bout 2 minutes or less.  
> > Ken 
> > y 
> > 
> > 
> > ____________________________________________________________________
> > 
> > From: programmingblind-bounce@xxxxxxxxxxxxx
> > [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of
> > BlueScale
> > Sent: Sunday, October 19, 2008 7:40 AM
> > To: programmingblind@xxxxxxxxxxxxx
> > Subject: Python lists and Math
> > 
> > 
> > 
> > Hi,
> > In my effort to learn Python, I have written a dice class.  I have a
> > roll method that accepts one argument, the number of dice to roll.
> > It returns a list of the results.  In the program I wrote to test
> > the class, I have something like:
> > score = roll.roll(1)
> > This rolls 1 six sided die.  The problem I run in to is when I try
> > to do:
> > score += roll.roll(1)
> > I get an error about the += operand not supporting list and int.  So
> > my next move was to try:
> > score += int(roll.roll())
> > Which Python says can't be done because the number is stored in a
> > list, not a string.  So, my question is, how do I keep track of the
> > score?  IS there some function to convert lists to int?
> > Thanks for the help
> > 

Other related posts: