Mini-project # 1 - Rock-paper-scissors-lizard-Spock

===================第一版============================

# 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
import random


def name_to_number(name):
    if name == "rock":
        return 0
    elif name == "Spock":
        return 1
    elif name == "paper":
        return 2
    elif name == "lizard":
        return 3
    elif name == "scissors":
        return 4
    else:
        print "Sorry, your input is incorrect"


def number_to_name(number):
    if number == 0:
        return "rock"
    elif number == 1:
        return "Spock"
    elif number == 2:
        return "paper"
    elif number == 3:
        return "lizard"
    elif number == 4:
        return "scissors"
    else:
        print "Sorry, your input is incorrect"


def rpsls(player_choice):
    print "\n"
    print "Player chooses ", player_choice

    player_number = name_to_number(player_choice)
    comp_number = random.randrange(0, 5)
    comp_choice = number_to_name(comp_number)
    print "Computer chooses ", comp_choice

    if player_number == 0:
        if comp_number == 0:
            print "Draw!"
        elif comp_number == 1:
            print "Computer wins!"
        elif comp_number == 2:
            print "Player wins!"
        elif comp_number == 3:
            print "Computer wins!"
        elif comp_number == 4:
            print "Player wins!"
        else:
            print "Wrong!"

    elif player_number == 1:
        if comp_number == 0:
            print "Player wins!"
        elif comp_number == 1:
            print "Draw!"
        elif comp_number == 2:
            print "Computer wins!"
        elif comp_number == 3:
            print "Computer wins!"
        elif comp_number == 4:
            print "Player wins!"
        else:
            print "Wrong!"

    elif player_number == 2:
        if comp_number == 0:
            print "Player wins!"
        elif comp_number == 1:
            print "Player wins!"
        elif comp_number == 2:
            print "Draw!"
        elif comp_number == 3:
            print "Computer wins!"
        elif comp_number == 4:
            print "Computer wins!"
        else:
            print "Wrong!"

    elif player_number == 3:
        if comp_number == 0:
            print "Computer wins!"
        elif comp_number == 1:
            print "Player wins!"
        elif comp_number == 2:
            print "Player wins!"
        elif comp_number == 3:
            print "Draw!"
        elif comp_number == 4:
            print "Computer wins!"
        else:
            print "Wrong!"

    elif player_number == 4:
        if comp_number == 0:
            print "Computer wins!"
        elif comp_number == 1:
            print "Computer wins!"
        elif comp_number == 2:
            print "Player wins!"
        elif comp_number == 3:
            print "Player wins!"
        elif comp_number == 4:
            print "Draw!"
        else:
            print "Wrong!"

rpsls("rock")
rpsls("Spock")
rpsls("paper")
rpsls("lizard")
rpsls("scissors")


===================第二版============================
修改判断胜负的算法


# 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

import random


def name_to_number(name):
    if name == "rock":
        return 0
    elif name == "Spock":
        return 1
    elif name == "paper":
        return 2
    elif name == "lizard":
        return 3
    elif name == "scissors":
        return 4
    else:
        print "Sorry, your input is incorrect"


def number_to_name(number):
    if number == 0:
        return "rock"
    elif number == 1:
        return "Spock"
    elif number == 2:
        return "paper"
    elif number == 3:
        return "lizard"
    elif number == 4:
        return "scissors"
    else:
        print "Sorry, your input is incorrect"


def rpsls(player_choice):
    print "Player chooses", player_choice

    player_number = name_to_number(player_choice)
    comp_number = random.randrange(0, 5)
    comp_choice = number_to_name(comp_number)
    print "Computer chooses", comp_choice

    value = (player_number-comp_number) % 5
    if (value == 4) or (value == 3):
        print "Computer wins!"
    elif (value == 1) or (value == 2):
        print "Player wins!"
    elif value == 0:
        print "Player and computer tie!"
    else:
        print "Something Wrong!"
    print "\n"

rpsls("rock")
rpsls("Spock")
rpsls("paper")
rpsls("lizard")
rpsls("scissors")


==================================第三版===============================

使用字典




# 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


import random




number2name = {0: "rock", 1: "Spock", 2: "paper", 3: "lizard", 4: "scissors"}
name2number = {"rock": 0, "Spock": 1, "paper": 2, "lizard": 3, "scissors": 4}
rule = {0: "Player and computer tie!", 1: "Player wins!",
        2: "Player wins!", 3: "Computer wins!", 4: "Computer wins!"}




def name_to_number(name):
    try:
        number = name2number[name]
        return number
    except KeyError:
        print "Sorry, your input is incorrect"




def number_to_name(number):
    try:
        name = number2name[number]
        return name
    except KeyError:
        print "Sorry, your input is incorrect"




def rpsls(player_choice):
    print "Player chooses", player_choice


    player_number = name_to_number(player_choice)
    comp_number = random.randrange(0, 5)
    comp_choice = number_to_name(comp_number)
    print "Computer chooses", comp_choice


    value = (player_number - comp_number) % 5
    try:
        print rule[value]
    except KeyError:
        print "Sorry, your input is incorrect"


    print "\n"


# test your code - THESE CALLS MUST BE PRESENT IN YOUR SUBMITTED CODE
rpsls("rock")
rpsls("Spock")
rpsls("paper")
rpsls("lizard")
rpsls("scissors")


# always remember to check your completed program against the grading rubric




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值