Hi Jason, Let's see if we can clean up some of your program. You had this function:
> def inputNames(playerOne, PlayerTwo): > p1name = raw_input("Enter your name.") > p2name = raw_input("Enter your name.") > return playerOne, playerTwo Let's write this in plain English. (1) The function takes as input a value called "playerOne", and a value called "PlayerTwo". Take careful note of the case (upper and lower) of the names, because that is important to Python. (2) It asks the user for a name, and assigns it to the variable "p1name". (3) It asks the user for a second name, and assigns it to "p2name". (4) It then ignores p1name and p2name, and does nothing with them. (5) And returns the variable playerOne and playerTwo. Take careful note that the *second* one does not match in case: it starts with a lowercase p, so you will get an error because "playerTwo" doesn't exist. Let's re-write it to work. For starters, there's no need to pass the players' names to the function which is supposed to get the players' names. Secondly, "inputNames" is such a dry, overly technical name. Let's make it simpler and friendlier: def get_names(): playerOne = raw_input("Enter the first player's name: ") playerTwo = raw_input("Enter the second player's name: ") return playerOne, playerTwo Now let's write a function to roll a single dice. Single die. Whatever. import random # We need Python's random number generator. def dice(sides=6): return random.randint(1, sides) This uses a *default value* for the number of sides. If you want to roll a ten-sided die, you call: dice(10) and it will give back a random number between 1 and 10. But if you want to roll the default six-sided die, you can leave out the 6 and just write: dice() and it will give back a random number between 1 and 10. Let's write a small program to play dice between two players. We'll make a simple dice game function that returns the name of the winning player, or the empty string in the case of a draw. def dice_game(playerOne, playerTwo): # playerOne rolls a single six-sided die. rollOne = dice() # So does playerTwo. rollTwo = dice() # The winner is the one who gets a higher number. if rollOne > rollTwo: return playerOne elif rollTwo > rollOne: return playerTwo else: # They must have rolled equal, so a draw. return "" Putting it all together, copy the lines between the ###### into a new file and save it as a Python program: ###### import random def dice(sides=6): return random.randint(1, sides) def get_names(): playerOne = raw_input("Enter the first player's name: ") playerTwo = raw_input("Enter the second player's name: ") return playerOne, playerTwo def dice_game(playerOne, playerTwo): # playerOne rolls a single six-sided die. rollOne = dice() # So does playerTwo. rollTwo = dice() # The winner is the one who gets a higher number. if rollOne > rollTwo: return playerOne elif rollTwo > rollOne: return playerTwo else: # They must have rolled equal, so a draw. return "" def displayWinner(winner): print "And the winner is: ", if winner == "": print "... the game is a draw!" else: print winner print def main(): playerOne, playerTwo = get_names() play_again = True while play_again: print "Rolling dice..." winner = dice_game(playerOne, playerTwo) displayWinner(winner) answer = raw_input("Would you like to play again? (y/n) ") play_again = answer.strip().lower() in ('y', 'yes') main() ###### Have a play around with that, and feel free to ask any questions you like. -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor