首先我来解释一下人机猜谜游戏。一个简单的小游戏,也就是所谓的人机猜谜游戏,其实就是一种双方一方是人,另一方是电脑的游戏。一个人的问题好解决,电脑怎么会乱打?而且,计算机知道什么是石头,什么是剪刀吗?答案当然是看不懂。计算机不仅不理解,而且不能产生剪刀石头布之类的东西。它只认数字,那么问题来了,怎么让它既能打拳,又能猜拳呢?计算机只有一根筋,但人类有智慧。聪明人想到了一个办法:既然计算机只懂数字,那我们就用数字代替“石头剪刀布”。好的,这个问题就解决了。问题2如何让电脑随机打卡而不是定时打卡?不知道大家有没有听说过python有一个生成随机数的库叫random。通过调用这个库,python可以根据需要生成一些随机数。细心的朋友可能注意到了前面那句话“根据需求生成一些随机数”。什么叫按需,都是按需生成的。生成的值还是随机的吗?先来尝尝代码:importrandom#导入随机库random.randint(1,10)#生成[1,10]范围内的任意随机整数Result:8random.random()#生成Random中的一个范围numberresultbetween[0,1):0.8231946484071119random.randrange(1,10,2)#生成一个1到10之间的随机数,步长为2,即生成的随机数只能是奇数number结果:9所谓生成符合要求的随机数是什么?通过代码是否直观易懂?由于我们要指定一个值而不是“石头、剪刀、布”,所以我们使用数字“1、2、3”来代替,所以使用random.randint(1,3),相当于从“1,2,3"三个数字中的一个是随机选择的。问题3打孔的问题解决了,最后一题判断大小!一般情况下,“1、2、3”之间存在大小关系,但“石头、剪刀、布”之间存在闭环关系,即石头打剪刀、剪刀打布、布赢摇滚!但是“1、2、3”之间显然没有这种关系,所以需要手动指定!这个指定流程需要控制流语句中的if判断语句:这个语句特别好理解,if的意思是if,就是如果指定的条件满足,那么执行一个结果;如果不满足第一个条件,但满足指定的第二个条件,则返回另一个结果……理论上不管有多少个条件,都可以一直写。当然,这只是理论上的。一般我们只会设置几个限定条件,不满足以上所有条件的都算一个case,返回一个结果。来!我们通过代码来理解一下:#判断销售业绩x=40#已知销售业绩为40ifx>=50:print("Overfulingthetask")#如果业绩超过50就是超额完成任务elifx>=40:print("完成任务")#如果成绩超过40,则任务完成else:print("未完成的任务")#其他情况,任务未完成结果:任务完成提示:由于if的执行顺序是从上面Execute往下判断语句,一旦满足一个条件,后面的条件判断语句就会被忽略。所以写if判断语句的时候要注意语句的顺序,条件严格的语句写在前面,条件宽松的语句写在后面。额外的问题实际上解决了前三个问题。可以写一个简单的人机猜谜游戏,但是会很简单,而且只能玩一次,不能连续玩。每次比赛结束,都必须重新开始比赛。能。为了提升游戏体验,我们做了一些设置可以开启连续游戏,如果不想玩也可以人为终止程序。这就需要控制流语句中的for循环语句和break循环语句。用小栗子一次展示for循环和break循环中用到的代码:#breakbreakstheentireloopx=[1,2,3,4]#Createanewlistforiinx:#Letthetemporaryvariablei逐个遍历listx中的元素ifi==3:#如果i遍历到元素3,则跳出循环breakbreakprint(i)#打印临时变量i的结果:12实际上,有两种方法可以打破循环。上面一个是彻底打破循环(break)。只要条件满足要求,循环就会中断,后面的所有循环都不会执行。;另一种方式是跳过循环(continue),即只跳过满足条件的循环,后面的循环仍会执行:#continueinterruptsthiscyclex=[1,2,3,4]foriinx:ifi==3:continueprint(i)result:124对比break和continue的结果,可以很明显的看出两者的区别!有了for循环和中断循环的命令,我们就可以指定游戏次数来实现连续游戏了!人机猜拳完整代码importrandomgesture=['rock','scissors','cloth']wins=0print("数字含义:1:石头,2:剪刀,3:布,0:退出游戏")foriinrange(20):user=int(input("Pleasepunch:"))ifuser==0:print("Exitthegame")breakifuserinrange(1,4):computer=int(random.randint(1,3))print("computerpunch:",computer)print("player:{0}VScomputer:{1}".format(gesture[user-1],gesture[computer-1]))if(user==computer):print("两人同意,平局")elif(user==1andcomputer==2)or(user==2andcomputer==3)or(user==3andcomputer==1):print("玩家获胜,计算机弱!")wins=wins+1else:print("计算机获胜,玩家说如果不接受,就打到天亮")else:print("你的出拳不符合规则,请再出拳")print("两人打架",i,"times")print("玩家获胜次数:",wins,"times")print("玩家获胜概率:",round(wins/i,2))运算结果:数字含义:1:石头,2:剪刀,3:布,0:退出游戏,请出拳:1电脑出拳:2玩家:石头VS电脑:剪刀胜,电脑弱!请出拳:2电脑出拳:3玩家:剪刀VS电脑:布胜,电脑弱!请出拳:3电脑出拳:1玩家:布VS电脑:石头玩家胜,电脑弱!请打:4你的打不符合规则,请重新打请打:2电脑打:2玩家:剪刀VS电脑:两把剪刀默契,平局,请打:0退出游戏,两人对战5次,玩家获胜次数:3次,玩家获胜概率:0.6当然,这个版本并不完美,感兴趣的小可爱们可以根据自己的想法继续完善!
