这个小项目来自 The Rice的课程 An Introduction to Interactive Programming in Python (Part 1)第二周的小项目,是一个进阶版的石头剪刀布小游戏,这里就借用一下网上随便搜到的翻译—石头剪刀布蜥蜴史波克吧!

游戏规则
分别用数字0-4代表你可以出的手势:
0 — rock
1 — Spock
2 — paper
3 — lizard
4 — scissors
其中每个手势可以杀死不同的另外两种手势:
0 kill—> 3, 4
1 kill—> 0, 4
2 kill—> 0, 1
3 kill—> 1, 2
4 kill—> 2, 3
我们需要编写一个小程序,计算机作为我们的对手随机出手势,和我们的手势比较后给出结果谁是胜利方

编程思路
从上文中的游戏规则我们可以看出,每个手势可以战胜比自己的数字小1和2的两个手势,但是有数学上的两个例外 0 kill—> 3, 4和 1 kill—> 4,所以以比对手的数字大1或者2或者以上的例外作为判断胜利的标准。
(来自作者的碎碎念:作者是一位自学编程的新手,平时写代码的习惯是针对最终要得到的结果一步一步思考并逐渐丰富代码,会优先使用自己的思路去写码,所以很多时候并非最优解;我在课程后面审阅其他同学的作业时也发现了一个更加简洁的思路,即自己出的手势的数字减去对手手势的数字的差值除以5的余数是1和2时胜利,可以包含以上的两个例外;如果大家有更好的思路,也欢迎在评论里分享:),以下是源代码)

源代码

import randomdef name_to_number(name):if name == 'rock':return 0elif name == 'Spock':return 1elif name == 'paper':return 2elif name == 'lizard':return 3elif name == 'scissors':return 4def 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'def rpsls(player_choice): computer_choice = random.randint(0,4)pc = name_to_number(player_choice)print('Player choices ' + player_choice + '\n'+ 'Computer choices ' + number_to_name(computer_choice))if pc ==  computer_choice:print "Player and computer tie!"elif ((computer_choice == (pc - 1)) and (pc >= 1)) or ((computer_choice == 4) and (pc <= 1)) or ((computer_choice == 3) and (pc == 0)):print "Player wins!"else:print "Computer wins!"    print  rpsls("rock")
rpsls("Spock")
rpsls("paper")
rpsls("lizard")
rpsls("scissors")

运行结果示例

Player choices rock
Computer choices scissors
Player wins!Player choices Spock
Computer choices paper
Computer wins!Player choices paper
Computer choices paper
Player and computer tie!Player choices lizard
Computer choices Spock
Computer wins!Player choices scissors
Computer choices paper
Computer wins!

coursera—Mini-project #1 - Rock-paper-scissor-lizard-Spock相关推荐

  1. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)...

    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...

  2. 计蒜客A1676 Rock Paper Scissors Lizard Spock

    链接 https://nanti.jisuanke.com/t/A1676 题解 每种分开算,比如我先考虑出 s c i s s o r s scissors scissors,把模式串中的所有 S ...

  3. 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...

  4. Python编程基础:第三十七节 石头剪刀布游戏Rock, Paper, Scissors Game

    第三十七节 石头剪刀布游戏Rock, Paper, Scissors Game 前言 实践 前言 我们这一节的内容主要是对前边学习内容的一个综合应用,以石头,剪刀,布游戏为例讲解列表.随机数.用户输入 ...

  5. 【Codeforces 1426 E】Rock, Paper, Scissors,贪心!算反面

    problem E. Rock, Paper, Scissors time limit per test1 second memory limit per test256 megabytes inpu ...

  6. Rock Paper将为圣地亚哥教士棒球队开发AR游戏

    7月18日青亭网报道,联想.摩托罗拉,以及Rock Paper Reality,将联合圣地亚哥教士棒球队开发一款棒球主题的AR游戏. 很显然,目前高通骁龙Spaces XR开发套件就是基于上述硬件:摩 ...

  7. python:实现stone paper scissor石头、布、剪刀(附完整源码)

    python:实现stone paper scissor石头.布.剪刀 utils.py main.py utils.py def validate(hand):if hand < 0 or h ...

  8. P3609 [USACO17JAN] Hoof, Paper, Scissor G

    题目背景 本题与 银组同名题目 在题意上一致,唯一的差别在于对变手势次数的限制. 题目描述 你可能玩过"石头,剪刀,布",这个游戏在奶牛中同样流行,不过它的名字变成了"蹄 ...

  9. CodeForces - 1426E Rock, Paper, Scissors(最小费用最大流+最大费用最大流)

    题目链接:点击查看 题目大意:A 和 B 在玩石头剪刀布,A 会出 a1 次石头,a2 次剪刀,a3 次布,同理 B 会出 b1 次石头,b2 次剪刀,b3 次布,若对战顺序是可以进行决定的,问 A ...

  10. Problem H Rock Paper Scissors,FFT

    题目 题目链接 题意 给出两段石头剪刀布的顺序SSS和T" role="presentation" style="position: relative;&quo ...

最新文章

  1. tc溜溜865手机投屏卡_游戏物理外挂再升级!腾讯黑鲨游戏手机3S开箱体验
  2. 网络七层协议_Nginx七层负载均衡原理解析
  3. Linux安装Kafka-manager可视化
  4. 【Linux】一步一步学Linux——visudo命令(104)
  5. 蓝桥杯 ADV-156 算法提高 分分钟的碎碎念
  6. 6.1 图的深度优先和广度优先搜索
  7. 我在美团Android研发岗工作的那5年,含泪整理面经
  8. [js] 对`a == (‘1‘||‘2‘||‘3‘) ? false : true`写法进行改进,写出你优化后的方法
  9. SQL强化(二) 在Oracle 中写代码
  10. 惠普服务器新加硬盘找不到,HP服务器更换硬盘后如何查看是否成功同步状态?...
  11. 【剑指 offer】(十)—— 二进制形式 1 的个数
  12. linux 加密文件,如何运用OpenSSL 对文件进行加密和解密
  13. 腾讯2018春招笔试题,翻转数列
  14. 为什么正定矩阵等于转置_正定矩阵
  15. 阿里云首席安全科学家吴翰清的思考:弹性安全网络,构建下一代安全的互联网
  16. 涨停前常见的K线形态
  17. LeetCode--476. 数字的补数
  18. 解密excel工作表保护
  19. 破解Esxi服务器中Windows虚机密码(Esxi服务器Windows虚拟机忘记密码解决方案)
  20. 微信小程序下拉加载更多 带后台 解决加载的内容 是新加载的view中最后一个view

热门文章

  1. Unity的[Obsolete]属性
  2. oracle_用户与概要文件
  3. Data truncation: Data too long for column ‘xxx‘ at row 1
  4. hdu_2670Girl Love Value(dp)
  5. uniapp日历组件
  6. 前端 js中图片地址转base64(简单好用)
  7. 第十届蓝桥杯大赛个人赛省赛(软件类本科B组)做题笔记Partial
  8. HTML系列之水平线标签hr
  9. Springboot 注解最全详解
  10. 《Python编程:从入门到实践》最高温度, 最低温度可视化