首先,解释一下人机猜拳,猜拳相信大家都了解,通俗讲就是“石头、剪刀、布”嘛!再简单不过的一个小游戏,而所谓人机猜拳其实就是猜拳的双方中一方是人另一方是计算机。

问题一

人的问题好解决,计算机怎么能随机出拳呢?而且,计算机懂的什么是石头什么是剪刀么?答案当然是它不懂,计算机不止不懂,还不会出石头剪刀这类东西,它只认得数字,那么问题来了,怎样才能让它出拳,还要出石头剪刀布呢?

计算机只有一根筋,但是人类有智慧啊,聪明的人们想了一个办法:既然计算机只认识数字,那么我们就用数字代替“石头、剪刀、布”。ok,这个问题解决了。

问题二

怎样让计算机随机出拳,而不是有规律的出拳?不知道大家有没有听说过python有一个专门产生随机数的库,叫做random,调用这个库,python可以根据需求产生一些随机数出来。细心的朋友们可能会留意到前边的一句话中说到“根据需求产生一些随机数”,什么叫做根据需求,而且都根据需求产生了,那产生出来的数值还是随机的么?

先来段代码感受下:

import random #导入random库
​
random.randint(1,10) #生成任意随机整数,生成范围在[1,10]之间

结果:

8
random.random()  #生成一个范围在[0,1)之间的随机数

结果:

0.8231946484071119
random.randrange(1,10,2) #生成一个范围从1到10的随机数,而且步长是2,即生成的随机数只能是奇数

结果:

9

所谓生成符合要求的随机数指的是什么,通过代码一看是不是就很直观很容易理解了?

既然要指定数值代替“石头、剪刀、布”,我们就用数字“1,2,3”来代替,所以用random.randint(1,3)就可以,相当于从“1,2,3”三个数字中随机抽取一个出来。

问题三

出拳的问题解决了,最后一个问题,判断大小!

正常情况下“1,2,3“之间是有大小关系的,但是”石头、剪刀、布“之间是一个闭环的关系,即石头赢过剪刀,剪刀赢过布,布赢过石头!但是“1,2,3”之间显然没有这样的关系,所以需要人为指定!

这个指定的过程就需要到控制流语句中的if判断语句:这个语句特别的通俗易懂,if就是如果的意思,也就是如果符合了指定的条件,那么就执行一个结果;如果不符合第一个条件,但是符合指定的第二个条件,那么就返回另一个结果......理论上来说不管有多少个条件都可以一直写下去,当然这只是理论上,一般我们只会设定有限的几个条件,然后不符合上述所有条件的算作一种情况,返回一个结果。

来!还是通过代码来理解下:

 #判断销售业绩
x = 40 #已知销售业绩为40
if x >=50:print("超额完成任务")  #如果业绩超过50,为超额完成任务
elif x >=40:print("完成任务")  #如果业绩超过40,为完成任务
else:print("未完成任务") #其他情况为未完成任务

结果:

完成任务

温馨提示:由于if判断语句的执行顺序时从上往下执行,并且一旦有满足条件的情况发生,后边的条件判断语句会被忽略。所以在写if判断语句时,注意语句的顺序,条件苛刻的语句写在最前边,条件宽松的语句写在后边。

额外问题

其实解决掉前三个问题,一个简单的人机猜拳就可以被写出来了,但是会很简陋,而且只能玩儿一次,不能连续玩儿,每次猜拳结束都要重新启动游戏才可以。为了提高游戏体验,我们进行一番设置,能够实现连续游戏,并且如果不想玩儿了也可以人为终止程序。

这就需要控制流语句中的for循环语句以及打断循环的语句,用一个小栗子一次性的展现一下for循环以及打断循环所用到的代码:

 #break 打断整个循环
x = [1,2,3,4] #新建一个列表
for i in x:   #让临时变量i挨个遍历列表x中的元素if i == 3: #如果i遍历到元素3的时候打断循环break  print(i) #打印临时变量i

结果:

1
​
2

实际上打断循环有两种方式,上边一种是彻底打断循环(break),只要条件符合要求即打断循环,后边所有的循环也都不会被执行;还有一种方式是跳过循环(continue),即只跳过符合条件的那一次循环,后续的循环依然会被执行:

 #continue 打断本次循环
x = [1,2,3,4]
for i in x:if i == 3:continueprint(i)

结果:

1
2
4

对比break和continue的结果,能够明显看出两者的区别!

有了for循环和打断循环的命令,我们就可以指定游戏次数,以此来实现连续游戏!

人机猜拳完整代码

import random
gesture = ['石头' , '剪刀', '布']
wins = 0
print("数字含义 : 1:石头 ,2:剪刀 ,3:布 ,0:退出游戏")
for i in range(20):user = int(input("请出拳:"))if user ==0:print("退出游戏")breakif user in range(1,4):computer = int(random.randint(1,3))print("computer出拳:",computer)print("玩家: {0} VS 计算机: {1}".format(gesture[user-1], gesture[computer-1]))if(user == computer):print("两位心有灵犀,是平局哦")elif(user == 1 and computer == 2) or (user == 2 and computer == 3) or (user == 3 and computer == 1):print("玩家获胜,电脑弱爆了!")wins = wins + 1else:print("电脑获胜,玩家表示不服,要决战到天亮")else:print("您的出拳不符合规则,请重新出拳")
print("两位交战 ", i,"次")
print("玩家获胜次数: ", wins,"次")
print("玩家获胜概率:",round(wins/i,2))
​

运行结果:

数字含义 : 1:石头 ,2:剪刀 ,3:布 ,0:退出游戏
请出拳:1
computer出拳: 2
玩家: 石头 VS 计算机: 剪刀
玩家获胜,电脑弱爆了!
请出拳:2
computer出拳: 3
玩家: 剪刀 VS 计算机: 布
玩家获胜,电脑弱爆了!
请出拳:3
computer出拳: 1
玩家: 布 VS 计算机: 石头
玩家获胜,电脑弱爆了!
请出拳:4
您的出拳不符合规则,请重新出拳
请出拳:2
computer出拳: 2
玩家: 剪刀 VS 计算机: 剪刀
两位心有灵犀,是平局哦
请出拳:0
退出游戏
两位交战  5 次
玩家获胜次数:  3 次
玩家获胜概率: 0.6
​

当然这一版也算不上多完美,有兴趣的小可爱可以根据自己的想法继续完善哦!

实用宝典 | 如何用Python实现人机猜拳小游戏相关推荐

  1. python猜拳游戏代码三局两胜_实用宝典 | 如何用Python实现人机猜拳小游戏

    首先,解释一下人机猜拳,猜拳相信大家都了解,通俗讲就是"石头.剪刀.布"嘛!再简单不过的一个小游戏,而所谓人机猜拳其实就是猜拳的双方中一方是人另一方是计算机. 问题一 人的问题好解 ...

  2. python人机猜拳游戏代码_实用宝典|如何用Python实现人机猜拳小游戏

    首先,解释一下人机猜拳,猜拳相信大家都了解,通俗讲就是"石头.剪刀.布"嘛!再简单不过的一个小游戏,而所谓人机猜拳其实就是猜拳的双方中一方是人另一方是计算机. 问题一 人的问题好解 ...

  3. python人机猜拳_python实现人机猜拳小游戏

    今天的这篇文章呢是对人机猜拳小游戏--石头剪刀布的一个描述以及代码展现 石头剪刀布游戏代码的简介:关于石头剪刀布这个小游戏,大致得到思路就是,玩家出一个手势,然后电脑再随机出一个手势,最后再判断是玩家 ...

  4. python编程猜拳小游戏_python实现人机猜拳小游戏

    今天的这篇文章呢是对人机猜拳小游戏--石头剪刀布的一个描述以及代码展现 石头剪刀布游戏代码的简介:关于石头剪刀布这个小游戏,大致得到思路就是,玩家出一个手势,然后电脑再随机出一个手势,最后再判断是玩家 ...

  5. 人机猜拳代码python_python实现人机猜拳小游戏

    今天的这篇文章呢是对人机猜拳小游戏--石头剪刀布的一个描述以及代码展现 石头剪刀布游戏代码的简介:关于石头剪刀布这个小游戏,大致得到思路就是,玩家出一个手势,然后电脑再随机出一个手势,最后再判断是玩家 ...

  6. java实现人机猜拳小游戏

    通过构建玩家类,计算机类,游戏类,三个类,实现了简单的人机猜拳小游戏. /** * @author 万星明 * @version 创建时间:2018年10月20日 下午3:01:09 * 计算机类 * ...

  7. 人机猜拳小游戏(类和对象)

    首先,创建四个java类分别是用户类User,电脑类Computer,游戏类Game以及测试类Test; 代码如下: 1.用户类 package 类和对象; import java.util.Scan ...

  8. Java人机猜拳小游戏

    完成人机猜拳互动游戏的开发 阶段一:实验--分析业务,创建用户类 1.分析业务,抽象出类.类的特征和行为 2.创建出用户类 阶段二:实验--创建出计算机类 创建计算机类Computer.实现计算机出拳 ...

  9. 【Python习题】面向对象的人机猜拳小游戏

    题目内容 编写代码,实现基于面向对象思想的人机猜拳游戏. 个人解法 import random# 玩家类 class Player:# 构造玩家函数def __init__(self, NUM_Cus ...

最新文章

  1. lucene源码分析的一些资料
  2. 总结 @ 在 C# string 中的用法
  3. Visual Studio 2019安装教程
  4. java 模板引擎_SpringBoot入门系列(四)如何整合Thymeleaf模板引擎
  5. c语言编写程序求8,使用c语言编写程式,实现计算1*2*3+4*5*6+7*8*9+……+28*29*30的值...
  6. 计算机一级繁体字转换,繁体字转换器
  7. Linux安装samba组件,CentOS7安装samba服务
  8. Python字符串count()
  9. redhat安装yum的四种方法(修改)
  10. 卫星轨道的估计问题(Matlab)(二):扩展卡尔曼滤波(EKF)对新问题的尝试
  11. HTTP协议&SOCKET协议
  12. 三星i9158刷机教程
  13. jQuery的实用特性扩展类库:jQuery++
  14. javascript函数传参方式
  15. 在jQuery中提交表单的方式有哪些
  16. Macbook pro (m1)突然没有办法按住shift打出大写R
  17. 上位机通信标准-OPC
  18. 代码英雄:操作系统之战
  19. 什么是测试场景标准库?
  20. 以字母Q为元素的创意logo设…

热门文章

  1. ToolBar距离左边界留白解决方案
  2. CSS内容超出元素高度滚动,并且滚动条隐藏
  3. 狙击小米+高通?余承东为首款7nm麒麟980打Call!
  4. USB2.0 扩展器(一拖四)原理图、PCB,可打样使用
  5. MATLAB基础-matlab的搜索路径
  6. [组队学习]查找1------打卡
  7. python3--偏函数
  8. 【翻译】使用Sencha Ext JS 6打造通用应用程序
  9. C++ 创建txt文件,并实现读写txt文件
  10. MTK 手机开发小技巧(2)(3)