On 07/26/2013 07:22 AM, Saad Javed wrote:
I'm trying to understand how this code works. I've commented the line
that I can't seem to understand. How did the guy come up with this?

#!/usr/bin/env python

import random

#rock > scissor > paper > rock

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: #How does this line work?

I'm not sure what aspect of it you're puzzled about, but % is the modulo operator. It produces the remainder upon integer division. So we're effectively dividing by 3, and keeping only the remainder, which will be 0, 1, or 2.

It will only be zero if cpu==player, but we've already tested that. So the only two cases are 1 and 2. A little experimenting will show you that if the first part( (player-cpu)%3 ) is 1, the second will be 2, and vice versa.

So the statement could be simplified to:

     if (player - cpu) % 3 == 1:

Now is it clear?


     print "Player wins"
   else:
     print "CPU wins"
else:
   print "tie!"


BTW, that input statement should be raw_input, since you're running it on Python 2.x.


--
DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to