G'day, The wife and I play a silly dice game and I thought it would be a good challange for me to write it as a program. No specific question, just wondering if my technique is ok and is there anything that could be done better. The 2 hardest things I find as a python beginner who has no real need to learn a programming language other than curiosity and too much spare time, are thinking of something to program and then knowing if what I have written could be done more efficiently.
import random def removeDice(): for a in range(3): dieList.remove(checkThree) while True: dieLeft = 6 totalScore = 0 while dieLeft > 0: dieList = [] score = 0 # roll the dice if dieLeft == 6: raw_input("\nPress enter to roll the dice ") print for dieRoll in range(dieLeft): dieList.append(random.randint(1,6)) print "Die roll %d is %d" % (dieRoll +1, dieList[dieRoll]) dieList.sort() if dieLeft == 6: #check if all dice are the same for fatChance in range(1,7): if dieList.count(fatChance) == 6: score += 5000 dieLeft = 0 print "\nYou rolled all %d's, WoW!!!" % (fatChance) #check for a straight if dieList == [1,2,3,4,5,6]: score += 1500 dieLeft = 0 print "\nYou rolled a straight" #check for 3 pairs if dieLeft == 6: if dieList[0] == dieList[1] and dieList[2] == dieList[3] and dieList[4] == dieList[5]: score += 1500 dieLeft = 0 print"\nYou rolled three pairs" #check for 3 of a kind if dieLeft > 2: for checkThree in range(1,7): if dieList.count(checkThree) >= 3: print "\nYou rolled three %d's" % (checkThree) yourChoice = raw_input("\nDo you wish to keep them? y/n ") if yourChoice == 'y': dieLeft -= 3 if checkThree == 1: score += 1000 removeDice() else: score = score + checkThree * 100 removeDice() #check for 1's and 5's if 1 in dieList or 5 in dieList: for testDice in range(dieLeft): if dieList[testDice] == 1: score += 100 dieLeft -= 1 if dieList[testDice] == 5: score += 50 dieLeft -= 1 totalScore = totalScore + score if score != 0: print "\nYour score is %d and you have %d dice left" % (totalScore, dieLeft) if score == 0: print "\nYou busted and score nothing" totalScore = 0 break if dieLeft >= 1: rollAgain = raw_input ("\nRoll the remaining dice? y/n ") if rollAgain != "y": break if dieLeft == 0: dieLeft = 6 print "\nYou used all the dice and must roll again" print "\n\nYour total score for that round was %d" % (totalScore) playAgain = raw_input("\nPlay again? (y/n) ") print if playAgain != "y": break John _________________________________________________________________ realestate.com.au: the biggest address in property http://ninemsn.realestate.com.au _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor