python - Simulate several rounds of rock, paper and scissors -


i trying implement function takes integer n , simulates n rounds of rock, paper, scissors between players player 1 , player 2. player wins rounds wins n-round game, ties possible. function should print result of game shown.

    >>> simul(1)     player 1     >>> simul(1)     tie     >>>simul(100)     player 2 

i think need approach in modular fashion. in other words, need combine @ least 2 functions, problem can't seem figure out how that. how can activate result embedded function when calling simul() function?

so have created function simulates game rock, paper, scissors execution function rps(p1, p2). code following:

    def rps(p1,p2):         #tie         if (p1==p2):             return 0         # player 1 wins             elif p1+p2 in ['pr','rs','sp']:             return -1         else:             return 1         # player 2 wins 

this i'm bit stuck. need activate function when executing simul() function—how can that? have far following:

    def rps(p1,p2):     #tie         if (p1==p2):             return 0     # player 1 wins             elif p1+p2 in ['pr','rs','sp']:             return -1         else:             return 1     # player 2 wins      def choose_rps():         import random         random.choice('rps')      def simul(n):         p1_wins, p2_wins = 0, 0         in range(n):             p1 = choose_rps()             p2 = choose_rps()             result = rps(p1, p2)             if result == -1:                 p1_wins += 1             elif result == 1:                 p2_wins += 1             if p1_wins > p2_wins:                 return 'player 1'             elif p1_wins == p2_wins:                 return 'tie'             else:                 return 'player 2' 

to "activate" function, call it. example:

def simul(n):     score = 0     in range(n):         p1 = choose_rps()         p2 = choose_rps()         result = rps(p1, p2)         score += result     if score < 0:         print('player 1')     elif score == 0:         print('tie')     else:         print('player 2') 

of course need write choose_rps function (which randomly chooses , returns 1 of r, p, or s)—but, can see, call same way rps function.


to put script:

def rps(p1, p2):     # ... code here  def choose_rps():     # implement here  def simul(n):     # code above 

and you'll want drive it, such this:

if __name__ == '__main__':     import sys     n = int(sys.argv[1]) if len(sys.argv) > 1 else 5     simul(n) 

… or…

while true:     n = int(input('how many trials?')) # raw_input python 2.x     simul(n) 

if want, can simplify further. example, can turn whole loop sum call generator expression:

def simul(n):     score = sum(rps(choose_rps(), choose_rps()) _ in range(n)) 

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -