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分析apache访问日志脚本分享
Feb 26 Python
详解Python中的多线程编程
Apr 09 Python
Python fileinput模块使用实例
Jun 03 Python
Django内容增加富文本功能的实例
Oct 17 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
python按比例随机切分数据的实现
Jul 11 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
python add_argument()用法解析
Jan 29 Python
浅析Python中字符串的intern机制
Oct 03 Python
Python必备技巧之字符数据操作详解
Mar 23 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
php并发加锁示例
2016/10/17 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
js实现简单的打印表格
2020/01/15 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
python的几种开发工具介绍
2007/03/07 Python
Python struct模块解析
2014/06/12 Python
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
Python中join和split用法实例
2015/04/14 Python
详解Python如何生成词云的方法
2018/06/01 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
汇源肾宝广告词
2014/03/20 职场文书
护士求职信范文
2014/05/24 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
庆六一宣传标语
2014/10/08 职场文书
财务工作个人总结
2015/02/27 职场文书
会计简历自我评价
2015/03/10 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL