John Connors said unto the world upon 22/02/06 07:59 PM: > G'day, > > I think my peanut sized brain is starting to understand how to do this.
Glad you're making progress :-) It's normal it takes a while to learn to adjust your thinking to a rigid and precise system. I've made some pretty big changes and explained in comments. There are a couple of bumps up in level of Python-fu, so ask if it puzzles. Also, watch for the likely improvements on mine, too :-) (I'm no expert, either.) Also, I tend to have longer names than most people do. But I think it is important for understanding longer programs (even your own) that the names are well chosen. <snip> > import random > > def dice(): > return random.randint(1,6) > > playagain = 'y' > > while playagain == 'y': > > die1 = dice() > die2 = dice() > > print '1st dice is ',die1,'\n','2nd dice is ',die2 > > die3 = dice() > die4 = dice() > winnum = die3 + die4 > > print'combined total for the next 2 dice is ',winnum > > if winnum == 6: > print 'you win' > else: > print 'you lose' > > playagain = raw_input('play again? (y/n) ') > > print 'goodbye' import random def die_roll(): return random.randint(1,6) # The while True / break construct avoids the dummy 'y' value # in your version. while True: # This assigns all the dice at once and makes a tuple from the # list comprehension. A tuple to make the string formatting happy. rolls = tuple([die_roll() for x in range(4)]) # uses string formatting, a very powerful tool print '1st die is %s\n2nd die is %s' %(rolls[:2]) turn_score = sum(rolls[2:]) print 'combined total for the next 2 dice is %s' %turn_score if turn_score == 6: print 'you win' else: print 'you lose' playagain = raw_input('play again? (y/n) ') # .lower() to accommodate 'Y'. You might think about how to # handle 'yes' and the like. if playagain.lower() != 'y': break print 'goodbye' HTH, Brian vdB _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor