Created
October 18, 2013 21:22
-
-
Save timmyshen/7048460 to your computer and use it in GitHub Desktop.
Mini-project description — Rock-paper-scissors-lizard-Spock
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Rock-paper-scissors-lizard-Spock | |
# The key idea of this program is to equate the strings | |
# "rock", "paper", "scissors", "lizard", "Spock" to numbers | |
# as follows: | |
# | |
# 0 - rock | |
# 1 - Spock | |
# 2 - paper | |
# 3 - lizard | |
# 4 - scissors | |
# import the random library at the beginning | |
import random | |
# helper functions | |
def number_to_name(number): | |
''' | |
This helper function translates number into name. | |
Number has to be 0, 1, 2, 3 or 4 | |
''' | |
if number == 0: | |
name = 'rock' | |
elif number == 1: | |
name = 'Spock' | |
elif number == 2: | |
name = 'paper' | |
elif number == 3: | |
name = 'lizard' | |
elif number == 4: | |
name = 'scissors' | |
else: | |
name = '' | |
print 'Please provide correct number' | |
return name | |
def name_to_number(name): | |
''' | |
This helper function translates name to number. | |
The input name has to be valid for the game. | |
''' | |
if name == 'rock': | |
number = 0 | |
elif name == 'Spock': | |
number = 1 | |
elif name == 'paper': | |
number = 2 | |
elif name == 'lizard': | |
number = 3 | |
elif name == 'scissors': | |
number = 4 | |
else: | |
number = -1 | |
print 'Please provide correct name' | |
return number | |
def rpsls(name): | |
''' | |
The main function that runs the game. | |
''' | |
player_number = name_to_number(name) | |
# compute random guess for comp_number using random.randrange() | |
comp_number = random.randrange(0, 5) | |
# compute difference of player_number and comp_number modulo five | |
diff_mod_5 = (player_number - comp_number) % 5 | |
# use if/elif/else to determine winner | |
if diff_mod_5 == 1 or diff_mod_5 == 2: | |
player_wins = 1 | |
elif diff_mod_5 == 3 or diff_mod_5 == 4: | |
player_wins = -1 | |
else: | |
player_wins = 0 | |
# convert comp_number to name using number_to_name | |
comp_name = number_to_name(comp_number) | |
# print results | |
print "Player chooses " + name | |
print "Computer chooses " + comp_name | |
if player_wins == 1: | |
print "Player wins!" | |
elif player_wins == -1: | |
print "Computer wins!" | |
else: | |
print "Player and computer tie!" | |
# print a new line, in order to match the sample output. | |
print "" | |
# test your code | |
rpsls("rock") | |
rpsls("Spock") | |
rpsls("paper") | |
rpsls("lizard") | |
rpsls("scissors") | |
# always remember to check your completed program against the grading rubric |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment