首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

用Python兑现的"石头,剪刀,布"

2012-11-05 
用Python实现的石头,剪刀,布需求:设计一个石头,剪子,布游戏,有时又叫Rochambeau,你小时候可能玩过,

用Python实现的"石头,剪刀,布"
需求:设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面是规则.你和你的对手,在同一时间做出特定的手势,必须是下面一种手势:石头,剪子,布.胜利者从
下面的规则中产生,这个规则本身是个悖论.
(a) 布包石头.
(b)石头砸剪子,
(c)剪子剪破布.在你的计算机版本中,用户输入她/他的选项,计算机找一个随机选项,然后由你

的程序来决定一个胜利者或者平手.注意:最好的算法是尽量少的使用 if 语句.


曾经实现过一个java版本的,用的思路是通过Enum分发的方式来实现,那种实现方式灵活性相对较强,但是代码量还是较多.现在正在学习python,所以用python实现了一个简单的版本,代码的数量上还是有明显的减少[本人是新手,不足请指教]:

'''demonstrate Stone, Stainless, Paper gameCreated on 2012-11-1@author: Eric'''import random;                          #elementA-->DRAW  WIN      LOST  COMPETE_RESULT = {"Stone":["Stone", "Stainless", "Paper"],                                "Stainless":["Stainless", "Paper", "Stone"],                                "Paper":["Paper", "Stone", "Stainless"]};SIGN = {0:"Stone", 1:"Stainless", 2:"Paper"}RESULTS = {0:"DRAW", 1:"WIN", 2:"LOST"};def rochambeauGame():    print('''0:STONE1:STAINLESS2:Paper3:quit''');    while True:        userSign = input("please input your userSign number:");        if int(userSign) in (1, 2, 3, 0):            if userSign == 0:                exit();            else:                userSignResults = COMPETE_RESULT[SIGN[int(userSign)]];                pcSign = SIGN[int(genereteRandomPCSign())];                print("User Sign:" + SIGN[int(userSign)] + " PC Sign:" + pcSign + " \n####result is: user " + RESULTS[userSignResults.index(pcSign)]);        else:            print("please input correctly order");#generate a random number,[0,2]def genereteRandomPCSign():    return random.randrange(3);if __name__ == '__main__':    rochambeauGame();


这个程序里面的if使用的数量在我看来应该是比较少了.



热点排行