python猜拳游戏代码三局两胜_实用宝典 | 如何用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 #已知销售业绩为40if 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
结果:
12
实际上打断循环有两种方式,上边一种是彻底打断循环(break),只要条件符合要求即打断循环,后边所有的循环也都不会被执行;还有一种方式是跳过循环(continue),即只跳过符合条件的那一次循环,后续的循环依然会被执行:
#continue 打断本次循环x = [1,2,3,4]for i in x: if i == 3: continue print(i)
结果:
124
对比break和continue的结果,能够明显看出两者的区别!
有了for循环和打断循环的命令,我们就可以指定游戏次数,以此来实现连续游戏!
人机猜拳完整代码
import randomgesture = ['石头' , '剪刀', '布']wins = 0print("数字含义 : 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:退出游戏请出拳:1computer出拳: 2玩家: 石头 VS 计算机: 剪刀玩家获胜,电脑弱爆了!请出拳:2computer出拳: 3玩家: 剪刀 VS 计算机: 布玩家获胜,电脑弱爆了!请出拳:3computer出拳: 1玩家: 布 VS 计算机: 石头玩家获胜,电脑弱爆了!请出拳:4您的出拳不符合规则,请重新出拳请出拳:2computer出拳: 2玩家: 剪刀 VS 计算机: 剪刀两位心有灵犀,是平局哦请出拳:0退出游戏两位交战 5 次玩家获胜次数: 3 次玩家获胜概率: 0.6
当然这一版也算不上多完美,有兴趣的小可爱可以根据自己的想法继续完善哦!
python猜拳游戏代码三局两胜_实用宝典 | 如何用Python实现人机猜拳小游戏相关推荐
- python猜拳游戏三局两胜制_python石头剪刀布小游戏(三局两胜制)
Python 石头剪刀布小游戏(三局两胜),供大家参考,具体内容如下 import random all_choioces = ['石头', '剪刀', '布'] win_list = [['石头', ...
- 石头、剪刀、布 小游戏, 三局两胜制,有一方累计胜利两次,则游戏结束
石头.剪刀.布 小游戏, 三局两胜制,有一方累计胜利两次,则游戏结束 (每次开始,玩家和电脑都要出拳) 随机数 0 1 2 Math.floor( Math.random()*3) 电脑 parseI ...
- 猜拳游戏(三局两胜)
//猜拳,剪刀0-1,石头-1, 布-2int renying = 0;int dnying = 0;for (int i = 1; i <= 3; i++){Random r = new Ra ...
- python猜拳游戏三局两胜制_猜拳游戏三局两胜------java实现代码
package com.javasm.exerices02; import java.util.ArrayList; import java.util.List; import java.util.R ...
- Python趣味案例——剪刀石头布小游戏改进版(自由实现三局两胜五局三胜七局四胜。。。)
前言 最近看了这篇知乎文章,深受启发: Python之石头剪刀布小游戏(史上最详细步骤) - 真小凡的文章 - 知乎 Python中实现剪刀石头布游戏的方式有很多种,这个博主允许直接输入石头.剪刀.布 ...
- 测试面试题集-Python三局两胜小游戏
------·今天是2020年第26天·------ 这是ITester软件测试小栈第91次推文 要求: 1.规定玩家和敌方两个角色,存储血量和攻击力数值: 2.血量是100-150的随机数,攻击力是 ...
- php石头剪刀布五局三胜,求程序,下面是剪刀石头布的程序,谁能帮忙改成能选择三局两胜,五局三胜……的?能成功运行的加分...
// 只需要修改main() //#define AllCount 5 // 输入你要选择的赛制,5为五局三胜,3为三局两胜 //#define WinCount AllCount / 2 + 1 v ...
- 三局两胜还是五局三胜?
已知如下的竞赛规则: 假定有甲.乙两个乒乓球运动员参加比赛,已知甲的实力强于乙.现有两个备选的竞赛规则,"三局两胜制"和"五局三胜制".请问,这种情况下:选手甲 ...
- Java Exer0905 玩家1、2互相攻击,直至一方生命值小于零,战斗结束,三局两胜,公布胜方。for循环、while循环、三元运算符、if-else、Scanner
题目:随机生成玩家1和玩家2的生命值(100,150)以及玩家1和玩家2的攻击值(30,50),然后互相攻击,直至一方生命值小于零,战斗结束:这样的战斗持续三局,采取三局两胜,最后输出战斗结果,公布获 ...
最新文章
- docker oracle创建实例_五分钟教你搭建oracle数据库环境
- JAVA去掉指定字符
- Java的native关键字
- [Flashback]开启数据库闪回数据库功能
- java 数据库连接实例,Java连接各种数据库的实例
- android 高斯模糊 c,c-如何在不使用任何内置高斯函数的情况下对图像进行高斯模糊处理?...
- Python Cookbook 3rd Edition Documentation
- u8api openapi_使用OpenAPI规范进行更好的API测试
- vim 快捷键_VIM学习笔记 环绕字符编辑(surround)
- EasyRTMP实现对接海康、大华等IPCamera SDK进行RTMP推送直播功能
- smalot-bootstrap-datetimepicker 使用心得
- vdbench的作用_vdbench
- matlab在常微分方程的应用,Matlab在常微分方程教学中的应用
- 用python判断素数合数_使用Python判断质数(素数)的简单
- Redhat_rhel8.0_DNS服务搭建步骤
- 养生“六伤”、“十二莫”、“十二少”
- 关于劳务派遣有哪些优缺点
- 碉堡了!最大 18 禁网站用 AI 和 ML 来做视频分类加标签
- 超级牙医html5游戏,App Store 上的“我是 小 牙医 游戏 - 牙醫 診所”
- 【RL系列】Multi-Armed Bandit问题笔记
热门文章
- 2019年繁星屠龙1-8窍门_“屠龙十日”已过两年,写给邓伦和罗云熙的一些话
- 微信内置浏览器清除缓存、cookie、local storage清除(安卓手机)
- vs2017运行环境_从零开始针对 .NET 应用的 DevOps 运营实践 运行环境搭建
- 网页上的声音如何在线录制,电脑音频录制软件哪个好
- 计算机毕业设计SSM蛋糕店会员系统【附源码数据库】
- CAD中如何进行引线标注?
- sftp 递归下载、上传整个文件夹里面的文件
- 基于IP65灯杆网关的城市内涝预防应用
- gradle安装及创建Java gradle 工程
- cocos2dx 通过plist文件 创建精灵