Skip to content

Instantly share code, notes, and snippets.

@elpargo
Created October 25, 2013 08:47
Show Gist options
  • Save elpargo/7151554 to your computer and use it in GitHub Desktop.
Save elpargo/7151554 to your computer and use it in GitHub Desktop.
rpsls.py Simple version
# Rock-paper-scissors-lizard-Spock template
# 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
# helper functions
items = {0:"rock",
1:"Spock",
2:"paper",
3:"lizard",
4:"scissors",
}
def number_to_name(number):
# fill in your code below
# convert number to a name using if/elif/else
# don't forget to return the result!
name = items.get(number)
if name:
return name
else:
return "Invalid Choice %s" % name
def name_to_number(name):
# fill in your code below
# convert name to number using if/elif/else
# don't forget to return the result!
for id_,n in items.items():
if n == name:
return id_
return "Invalid Choice %s" % name
import random
def rpsls(name):
# fill in your code below
# convert name to player_number using name_to_number
player_number = name_to_number(name)
# compute random guess for comp_number using random.randrange()
comp_number = random.randrange(4)
# compute difference of player_number and comp_number modulo five
difference = (player_number - comp_number) % 5
# use if/elif/else to determine winner
if difference in (1,2):
winner = "Player"
elif difference in (3,4):
winner = "Computer"
elif difference == 0:
winner = "Noone"
else:
winner = "Shouldn't happen"
# convert comp_number to name using number_to_name
comp_name = number_to_name(comp_number)
# print results
print
print "Player chooses %s" % name
print "Computer chooses %s"% comp_name
print "%s wins!" % winner
# 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