需求:设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面是规则.你和你的对手,在同一时间做出特定的手势,必须是下面一种手势:石头,剪子,布.胜利者从

下面的规则中产生,这个规则本身是个悖论.

(a) 布包石头.

(b)石头砸剪子,

(c)剪子剪破布.在你的计算机版本中,用户输入她/他的选项,计算机找一个随机选项,然后由你

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

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

'''

demonstrate Stone, Stainless, Paper game

Created 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:STONE

1:STAINLESS

2:Paper

3: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使用的数量在我看来应该是比较少了.

分享到:

2012-11-01 21:40

浏览 337

评论

python中answer是什么意思_用Python实现的quot;石头,剪刀,布quot; - The answer to everything - ITeye博客...相关推荐

  1. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  2. python中for语句的使用_对Python中for复合语句的使用示例讲解

    当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧--for复合语句. 简单写一个小程序,用于延时循环嵌套功能如下: #!/usr/bin/p ...

  3. python中idx是什么意思_使用Python解析MNIST数据集(IDX文件格式)

    前言 最近在学习Keras,要使用到LeCun大神的MNIST手写数字数据集,直接从官网上下载了4个压缩包: MNIST数据集 解压后发现里面每个压缩包里有一个idx-ubyte文件,没有图片文件在里 ...

  4. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  5. python中二进制和文本不同_关于Python字符编码与二进制不得不说的一些事

    二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但 ...

  6. python中sample是什么意思_基于Python中random.sample()的替代方案

    python中random.sample()方法可以随机地从指定列表中提取出N个不同的元素,但在实践中发现,当N的值比较大的时候,该方法执行速度很慢,如: numpy random模块中的choice ...

  7. python中的class怎么用_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  8. python中矩阵的表示方法_关于Python表示矩阵的方法详解

    这篇文章主要介绍了Python表示矩阵的方法,结合具体实例形式分析了Python表示矩阵的方法与相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python表示矩阵的方法.分享给大家供大家参考, ...

  9. python中list作为函数参数_在python中list作函数形参,防止被实参修改的实现方法

    0.摘要 我们将一个list传入函数后,函数内部对实参修改后,形参也会随之改变.本文将主要介绍这种错误的现象.原因和解决方法. 1.代码示例 def fun(inner_lst): inner_lst ...

最新文章

  1. Linux系统是否能够联网
  2. 从入门到精通的Java进阶学习笔记整理,不愧是大佬
  3. 信息系统开发平台OpenExpressApp - 数据权限
  4. Index.get_indexer 方法的含义
  5. 最新ui设计趋势_10个最新且有希望的UI设计趋势
  6. 首尾非零正则_推荐收藏一波,工作中常用的正则表达式总结!
  7. 数据运营小白如何搭建“初期用户生命周期体系”?
  8. Android - 获取字符串长度的宽度
  9. QT正则表达式截取字符串末尾数字
  10. 创建第一个Android app项目
  11. for(in/of)/forEarch的区别和使用
  12. JavaScript 鼠标事件
  13. 使用certbot完成证书的自动发放
  14. 计算机加密解除,bitlocker加密如何取消?Win7系统电脑取消bitlocker加密的方法
  15. 时分复用共享和空分复用共享的介绍
  16. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐
  17. 罗斯蒙特248HANAU2NS温度变送器
  18. 2022企业人效管理白皮书
  19. 阿里P9又有新瓜...
  20. 拼多多,是真相还是谣言,原来是戏言

热门文章

  1. Spring Cloud 学习总结
  2. 在 4GB 物理内存的机器上,申请 8G 内存会怎么样?
  3. Gulp折腾记 - (3)常用任务构建的demo[改进版]
  4. python 实战(5)python 登录 爬自己脉脉好友数据
  5. JavaEE学习之jsp编写登陆注册页面
  6. GCM 的升级版——FCM(firebase cloud messaging)
  7. safari阅读模式_如何在Safari中使用和调整阅读器模式
  8. PostGIS Geography Type
  9. Shellshock(破壳)系列漏洞简要分析及检测
  10. error怎么开机 fan_台式机开机出现cpu fan error怎么办