Python使用random模块实现掷骰子游戏的示例代码


Posted in Python onApril 29, 2021

引入内容

根据人民邮电出版社出版的《Python程序设计现代设计方法》P102习题中的第7题——掷骰子游戏,进行代码编写。

题目要求

一盘游戏中,两人轮流掷骰子5次,并将每次掷出的点数累加,5局之后,累计点数较大者获胜,点数相同则为平局。根据此规则实现掷骰子游戏,并算出50盘之后的胜利者( 50盘中嬴得盘数最多的,即最终胜利者)。

审题: 共有50盘游戏。一盘游戏有5局,每一局双方各掷骰子一次,5局结束以后统计分数,分数高的一方获胜。至此,一盘游戏结束。50盘游戏结束后,赢得盘数最多的一方为最终胜利者。

编写开始

↓↓↓开始奇妙Python之旅吧!↓↓↓

模块的导入以及初始变量的定义

统一声明变量,便于后续的管理和使用。

import random  #导入模块
# ↓↓↓ 定义初始变量
a =0  # 用来记录人物A掷投掷的结果
b =0  # 用来记录人物B掷投掷的结果
level_score =0  # 用来记录双方平局次数
score_A =0  # 人物A的每小局胜利次数
score_B =0  # 人物B的每小局胜利次数

开始比赛过程

本处用了for … in range(50)循环模拟进行50盘游戏。并在循环内嵌套新的for … in …range(5)作为每盘游戏中进行5次过程的模拟

for x in range(50):  # 进行50盘比赛
    for n in range(5):  # 模拟双方每盘摇5次骰子
        person_A =random.randint(1,6)  # 使用random模块的randit进行1~6模拟摇骰子的过程
        a +=person_A  # 将投掷结果保存

        person_B =random.randint(1,6)# 使用random模块的randit进行1~6模拟摇骰子的过程
        b +=person_B  # 将投掷结果保存
    if a>b:  # 比较双方投掷结果总和,将比较结果保存至本场比赛最终结果
        score_A+=1
    elif a<b:
        score_B+=1
    else:
        level_score+=1
    a =0  # 重置双方分数,并进入下一轮循环
    b =0  # 重置双方分数,并进入下一轮循环
    # 此处如果不重置分数,本次投掷结果将会进入下一次循环,有悖题目要求和比赛公平性。

比赛结束以后统计结果

前面我们对每盘游戏进行了模拟,现在我们要书写题目最后的要求的代码。
因为前面用了score_A和score_B作为用来记录每盘游戏结束的变量,所以此处我们只需要对之前的变量进行大小比较即可。

if score_A>score_B:  # 比较最终结果,游戏结束
    print(f'本次比赛A胜,A总分为:{score_A},B总分为:{score_B},比赛期间平局次数为:{level_score}')
elif score_A<score_B:
    print(f'本次比赛B胜,A总分为:{score_A},B总分为:{score_B},比赛期间平局次数为:{level_score}')
else:
    print(f'本次比赛平局,双方总分:A{score_A} vs B{score_B},比赛期间平局次数为:{level_score}')

完整代码

import random  #导入模块
# ↓↓↓ 定义初始变量
a =0  # 用来记录人物A掷投掷的结果
b =0  # 用来记录人物B掷投掷的结果
level_score =0  # 用来记录双方平局次数
score_A =0  # 人物A的每小局胜利次数
score_B =0  # 人物B的每小局胜利次数

for x in range(50):  # 进行50盘比赛
    for n in range(5):  # 模拟双方每盘摇5次骰子
        person_A =random.randint(1,6)  # 使用random模块的randit进行1~6模拟摇骰子的过程
        a +=person_A  # 将投掷结果保存

        person_B =random.randint(1,6)# 使用random模块的randit进行1~6模拟摇骰子的过程
        b +=person_B  # 将投掷结果保存
    if a>b:  # 比较5局以后双方投掷结果总和,将比较结果保存至本场比赛最终结果
        score_A+=1 # A本盘获胜
    elif a<b: # B本盘获胜
        score_B+=1
    else:
        level_score+=1
    a =0  # 重置双方分数,并进入下一轮循环
    b =0  # 重置双方分数,并进入下一轮循环
    # 此处如果不重置分数,本次投掷结果将会进入下一次循环,有悖题目要求和比赛公平性。

if score_A>score_B:  # 比较最终结果,游戏结束
    print(f'本次比赛A胜,A总分为:{score_A},B总分为:{score_B},比赛期间平局次数为:{level_score}')
elif score_A<score_B:
    print(f'本次比赛B胜,A总分为:{score_A},B总分为:{score_B},比赛期间平局次数为:{level_score}')
else:
    print(f'本次比赛平局,双方总分:A{score_A} vs B{score_B},比赛期间平局次数为:{level_score}')

到此这篇关于Python使用random模块实现掷骰子游戏的示例代码的文章就介绍到这了,更多相关Python random掷骰子内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python每次处理固定个数的字符的方法总结
Jan 29 Python
python使用新浪微博api上传图片到微博示例
Jan 10 Python
详解C++编程中一元运算符的重载
Jan 19 Python
Python简单读取json文件功能示例
Nov 30 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
python实现简单flappy bird
Dec 24 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
python向图片里添加文字
Nov 26 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
python如何实时获取tcpdump输出
Sep 16 Python
Django REST framework 限流功能的使用
Jun 24 Python
python中requests库+xpath+lxml简单使用
python实现进度条的多种实现
教你如何使用Python下载B站视频的详细教程
Python+uiautomator2实现自动刷抖音视频功能
Django项目如何正确配置日志(logging)
Apr 29 #Python
django上传文件的三种方式
Apr 29 #Python
详解Django的MVT设计模式
You might like
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
php自定文件保存session的方法
2014/12/10 PHP
PHP答题类应用接口实例
2015/02/09 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
php判断目录存在的简单方法
2019/09/26 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
JS的get和set使用示例
2014/02/20 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
python处理cookie详解
2014/02/07 Python
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
国家励志奖学金获奖感言
2014/01/09 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
Mysql基础之常见函数
2021/04/22 MySQL
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
详解thinkphp的Auth类认证
2021/05/28 PHP
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏