Python实现猜拳与猜数字游戏的方法详解
作者:渴望力量的哈士奇 时间:2022-06-17 18:32:25
至此,我们的 Python零基础入门篇 的系列专栏到今天基本上算是结束了。今天没有任何的知识点,只是运用我们之前学习过的知识做两个小游戏的案例。第一个是模拟猜拳的小游戏,第二个就是猜数字的游戏。
猜拳小游戏
需求:
运用至今所学的 Python 知识编写脚本,实现一个人与计算机玩猜拳的石头剪刀布的小游戏。
这里我们先思考一下,如果将石头、剪刀、布分别用数字0、1、2表示,那么如何判定谁胜谁负呢?
user | robot | 结果 |
---|---|---|
0(石头) | 0(石头) | 平局 |
0(石头) | 1(剪刀) | user 获胜 |
0(石头) | 2(布) | robot 获胜 |
1(剪刀) | 0(石头) | robot 获胜 |
1(剪刀) | 1(剪刀) | 平局 |
1(剪刀) | 2(布) | user 获胜 |
2(布) | 0(石头) | user 获胜 |
2(布) | 1(剪刀) | robot 获胜 |
2(布) | 2(布) | 平局 |
不难发现游戏的规律如下:
如果user和computer相等就是平局
如果用 (user+1) 除以 3 得到的余数与 robot 相等,就是user(人)获得胜利
其余情况都是 robot 获胜
案例脚本如下:
# coding:utf-8
import random
# TODO:只针对输入的参数做了 int 的排除,未针对输入的 非 int 类型做校验,可通过 isNum 函数做校验,或者进行 异常捕获。
data = {0: '石头', 1: '剪刀', 2: '布'}
while(True):
robot = random.randint(0, 2)
print('********猜拳小游戏即将开始,请准备!********')
user = int(input('请输入[0:石头;1:剪刀;2:布;9:退出游戏]:'))
if user not in (9, 0, 1, 2):
print('--------输入参数不合法,请重新输入!--------')
print(' ')
continue
elif user == 9:
print('**********游戏结束,下次再来玩哦**********')
break
elif not 0 <= user <= 2:
continue
if user == robot:
print('\'你\'出的是{}, \'ROBOT\' 出的是{}, 结果为:\'平局\''.format(data[user], data[robot]))
print(' ')
elif (user + 1) % 3 == robot:
print('\'你\'出的是{}, \'ROBOT\' 出的是{}; 结果为:\'你赢了!\''.format(data[user], data[robot]))
print(' ')
else:
print('\'你\'出的是{}, \'ROBOT\' 出的是{}; 结果为:\'ROBOT赢了!\''.format(data[user], data[robot]))
print(' ')
PS:这里的传入参数校验并不完善,大家可以尝试自己动手完善一下。
数字猜猜猜小游戏
需求:
根据现实生活中的猜数字游戏的游戏规则,运用Python语言模拟实现猜数字游戏的的基本功能.
1、设定可猜测的次数,并根据提示进行数字区间的输入猜测的数字
2、将输入的数字与随机生成的数字进行比对,同时次数减一。若次数用完后,仍未猜对,则游戏结束。
案例脚本如下:
# coding:utf-8
import random
# TODO:这并不是我想要的效果,但是目前也只能写成这样了,有时间再晚上吧。
robot = random.randint(1, 10)
count = 5
print("*************游戏开始***************")
print("猜数字游戏,数字在1到10之间,你有{0}次机会".format(count))
print(' ')
while count > 0:
num = input("请输入您要猜测的数字:")
if num.isdigit():
num = int(num)
if num == robot:
print("对了")
print(' ')
break
elif num < robot:
# print("您输入的参数小了", '剩余机会次数:%s' % int(count-1))
print("您输入的参数小了", '剩余机会次数:{0}'.format(count-1))
print(' ')
else:
print("您输入的参数大了", '剩余机会次数:{0}'.format(count-1))
print(' ')
count -= 1
if count == 0:
print("您的机会已经用完")
print(' ')
break
# print("你还剩余{0}次机会".format(count))
# print(' ')
else:
print("你输入的不是一个数字,请重新输入")
print(' ')
print("**********游戏结束************")
来源:https://blog.csdn.net/weixin_42250835/article/details/123962758
标签:Python,猜拳,猜数字
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python编写Windows Service服务程序
2022-03-08 03:04:08
![](https://img.aspxhome.com/file/2023/9/101149_0s.jpg)
Django实现简单登录的示例代码
2022-03-26 04:10:18
![](https://img.aspxhome.com/file/2023/1/86631_0s.png)
详解Python Flask API 示例演示(附cookies和session)
2021-12-03 18:37:29
![](https://img.aspxhome.com/file/2023/4/78684_0s.jpg)
ASP中转换unicode编码为gb2312函数
2007-10-22 17:46:00
深入浅析python with语句简介
2022-06-30 20:23:16
浅析Go设计模式之Facade(外观)模式
2023-07-16 19:23:08
python中的&&及||的实现示例
2022-02-06 19:53:42
解决SpringBoot启动过后不能访问jsp页面的问题(超详细)
2023-06-13 19:43:31
![](https://img.aspxhome.com/file/2023/9/64409_0s.jpg)
CNN卷积函数Conv2D()各参数的含义及用法解读
2022-03-12 05:35:21
![](https://img.aspxhome.com/file/2023/4/76954_0s.png)
JSP页面传参出现中文乱码的解决方案
2023-06-13 12:53:03
DreamWeaver批处理提高篇
2007-12-03 11:34:00
![](https://img.aspxhome.com/file/UploadPic/20072/200723113447246s.gif)
使用phpMyAdmin进行mysql数据库备份和还原的方法
2008-10-13 20:56:00
![](https://img.aspxhome.com/file/uploadpic/200810/13/2008101321111543.jpg)
常用ASCII 码对照表
2007-08-21 14:35:00
python开发入门——set的使用
2023-09-21 09:39:56
如何提升JavaScript的运行速度(函数篇)
2010-05-17 13:27:00
详解 PyTorch Lightning模型部署到生产服务中
2021-10-23 01:17:25
![](https://img.aspxhome.com/file/2023/6/90416_0s.jpg)
SQL数据库操作类
2009-01-14 16:26:00
js实现(层,表格)元素圆角的函数
2008-01-01 16:40:00
![](https://img.aspxhome.com/file/UploadPic/20081/1/200811164924859s.gif)
如何在Windows中安装多个python解释器
2023-08-28 02:55:43
![](https://img.aspxhome.com/file/2023/1/101011_0s.jpg)
Python中random函数的用法整理大全
2023-05-08 15:15:52
![](https://img.aspxhome.com/file/2023/6/92376_0s.png)