京公网安备 11010802034615号
经营许可证编号:京B2-20210330
首先,解释一下人机猜拳,猜拳相信大家都了解,通俗讲就是“石头、剪刀、布”嘛!再简单不过的一个小游戏,而所谓人机猜拳其实就是猜拳的双方中一方是人另一方是计算机。今天,我们就来用python实现人机猜拳小游戏!
问题一
人的问题好解决,计算机怎么能随机出拳呢?而且,计算机懂的什么是石头什么是剪刀么?答案当然是它不懂,计算机不止不懂,还不会出石头剪刀这类东西,它只认得数字,那么问题来了,怎样才能让它出拳,还要出石头剪刀布呢?
计算机只有一根筋,但是人类有智慧啊,聪明的人们想了一个办法:既然计算机只认识数字,那么我们就用数字代替“石头、剪刀、布”。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:
continue print(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("退出游戏")
break if 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 + 1 else:
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
当然这一版也算不上多完美,有兴趣的小可爱可以根据自己的想法继续完善哦!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在回归分析中,因子(即自变量)的筛选是构建高效、可靠回归模型的核心步骤——实际分析场景中,往往存在多个候选因子,其中部分 ...
2026-04-13在机器学习模型开发过程中,过拟合是制约模型泛化能力的核心痛点——模型过度学习训练数据中的噪声与偶然细节,导致在训练集上表 ...
2026-04-13在数据驱动商业升级的今天,商业数据分析已成为企业精细化运营、科学决策的核心手段,而一套规范、高效的商业数据分析总体流程, ...
2026-04-13主讲人简介 张冲,海归统计学硕士,CDA 认证数据分析师,前云南白药集团资深数据分析师,自媒体 Python 讲师,全网课程播放量破 ...
2026-04-13在数据可视化与业务分析中,同比分析是衡量业务发展趋势、识别周期波动的核心手段,其核心逻辑是将当前周期数据与上年同期数据进 ...
2026-04-13在机器学习模型的落地应用中,预测精度并非衡量模型可靠性的唯一标准,不确定性分析同样不可或缺。尤其是在医疗诊断、自动驾驶、 ...
2026-04-10数据本身是沉默的,唯有通过有效的呈现方式,才能让其背后的规律、趋势与价值被看见、被理解、被运用。统计制图(数据可视化)作 ...
2026-04-10在全球化深度发展的今天,跨文化传播已成为连接不同文明、促进多元共生的核心纽带,其研究核心围绕“信息传递、文化解读、意义建 ...
2026-04-09在数据可视化领域,折线图是展示时序数据、趋势变化的核心图表类型之一,其简洁的线条的能够清晰呈现数据的起伏规律。Python ECh ...
2026-04-09在数据驱动的时代,数据分析早已不是“凭经验、靠感觉”的零散操作,而是一套具备固定逻辑、标准化流程的系统方法——这就是数据 ...
2026-04-09长短期记忆网络(LSTM)作为循环神经网络(RNN)的重要改进模型,凭借其独特的门控机制(遗忘门、输入门、输出门),有效解决了 ...
2026-04-08在数据分析全流程中,数据质量是决定分析结论可靠性的核心前提,而异常值作为数据集中的“异类”,往往会干扰统计检验、模型训练 ...
2026-04-08在数字经济飞速发展的今天,数据已渗透到各行各业的核心场景,成为解读趋势、优化决策、创造价值的核心载体。而数据分析,作为挖 ...
2026-04-08在数据分析全流程中,数据处理是基础,图形可视化是核心呈现手段——前者负责将杂乱无章的原始数据转化为干净、规范、可分析的格 ...
2026-04-07在数据分析与统计推断中,p值是衡量假设检验结果显著性的核心指标,其本质是在原假设(通常为“无效应”“无差异”)成立的前提 ...
2026-04-07在数字经济深度渗透的今天,数据已成为企业生存发展的核心资产,企业的竞争本质已转变为数据利用能力的竞争。然而,大量来自生产 ...
2026-04-07Python凭借简洁的语法、丰富的生态库,成为算法开发、数据处理、机器学习等领域的首选语言。但受限于动态类型、解释性执行的特性 ...
2026-04-03在深度学习神经网络中,卷积操作是实现数据特征提取的核心引擎,更是让模型“看懂”数据、“解读”数据的关键所在。不同于传统机 ...
2026-04-03当数字化转型从企业的“战略口号”落地为“生存之战”,越来越多的企业意识到,转型的核心并非技术的堆砌,而是数据价值的深度挖 ...
2026-04-03在日常办公数据分析中,数据透视表凭借高效的汇总、分组功能,成为Excel、WPS等办公软件中最常用的数据分析工具之一。其中,“计 ...
2026-04-02