[Tutor] Rock, Paper, Scissors

Christopher Spears cspears2002 at yahoo.com
Fri Aug 11 01:39:41 CEST 2006


Here is my Rock,Paper,Scissors script:

#!/usr/bin/python

import random
random.seed()

class Human:
	def __init__(self):
		self.points = 0
		self.choice = " "
		
	def plays(self):
		self.choice = raw_input("Pick (R)ock, (P)aper, or
(S)cissors! ")
		if self.choice == 'r':
			self.choice = 'rocks'
		elif self.choice == 'p':
			self.choice = 'paper'
		elif self.choice == 's':
			self.choice = 'scissors'
		else:
			print "Invalid response"
	
	

class Computer:
	def __init__(self):
		self.points = 0
		self.choice = " "
	
	def plays(self):
		comp_choice = random.randint(0,2)
		if comp_choice == 0:
			self.choice = 'rocks' #for rocks
		elif comp_choice == 1:
			self.choice = 'paper' #for paper
		else:
			self.choice = 'scissors' #for scissors
			
def compare_objects(human, computer):
	print "Human picked ", human.choice
	print "Computer picked", computer.choice
	if human.choice == computer.choice:
		print "Draw!"
	elif human.choice == 'rocks' and computer.choice ==
'paper':
		print "Computer wins!"
		computer.points = computer.points + 1
	elif human.choice == 'paper' and computer.choice ==
'rocks':
		print "Human wins!"
		human.points = human.points + 1
	elif human.choice == 'scissors' and computer.choice
== 'paper':
		print "Human wins!"
		human.points = human.points + 1
	elif human.choice == 'paper' and computer.choice ==
'scissors':
	 	print "Computer wins!"
		computer.points = computer.points + 1
	elif human.choice == 'rocks' and computer.choice ==
'scissors':
		print "Human wins!"
		human.points = human.points + 1
	else human.choice == 'scissors' and computer.choice
== 'rocks':
		print "Computer wins!"
		computer.points = computer.points + 1
		
if __name__ == "__main__":
	print "Welcome to Rock, Paper, Scissors!"
	final_points = raw_input("Play to how many points? ")
	human = Human()
	computer = Computer()
	while (human.points <= final_points or
computer.points <= final_points):
		human.plays()
		computer.plays()
		compare_objects(human, computer)
		print "Score:\tHuman: ",human.points,"\tComputer:
",computer.points
	
	
My main concern is the compare_objects function.  Is
there any easier way to write it?  Actually, the
function does not work because "else condition:"
causes a syntax error.

-Chris


More information about the Tutor mailing list