I'm trying to get this rock paper scissors game to either return a Boolean value, as in set player_wins to True or False, depending on if the player wins, or to refactor this code entirely so that it doesn't use a while loop. I'm coming from the sysadmin side of the world, so please be gentle if this is written in the wrong style. I have tried a few things, and I understand TIMTOWTDI, and would just like some input.

Thanks.

import random global player_wins player_wins=None def rps(): player_score = 0 cpu_score = 0 while player_score < 3 and cpu_score < 3: WEAPONS = 'Rock', 'Paper', 'Scissors' for i in range(0, 3): print "%d %s" % (i + 1, WEAPONS[i]) player = int(input ("Choose from 1-3: ")) - 1 cpu = random.choice(range(0, 3)) print "%s vs %s" % (WEAPONS[player], WEAPONS[cpu]) if cpu != player: if (player - cpu) % 3 < (cpu - player) % 3: player_score += 1 print "Player wins %d games\n" % player_score else: cpu_score += 1 print "CPU wins %d games\n" % cpu_score else: print "tie!\n" rps() 

I'm trying to do something like this:

 print "%s vs %s" % (WEAPONS[player], WEAPONS[cpu]) if cpu != player: if (player - cpu) % 3 < (cpu - player) % 3: player_score += 1 print "Player wins %d games\n" % player_score if player_score == 3: return player_wins==True else: cpu_score += 1 print "CPU wins %d games\n" % cpu_score if cpu_score == 3: return player_wins==False else: print "tie!\n" 
5

2 Answers

Ignoring the refactoring issues, you need to understand functions and return values. You don't need a global at all. Ever. You can do this:

def rps(): # Code to determine if player wins if player_wins: return True return False 

Then, just assign a value to the variable outside this function like so:

player_wins = rps() 

It will be assigned the return value (either True or False) of the function you just called.


After the comments, I decided to add that idiomatically, this would be better expressed thus:

 def rps(): # Code to determine if player wins, assigning a boolean value (True or False) # to the variable player_wins. return player_wins pw = rps() 

This assigns the boolean value of player_wins (inside the function) to the pw variable outside the function.

5

Have your tried using the 'return' keyword?

def rps(): return True 
0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy