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多重继承实例
Oct 11 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
windows下python安装pip图文教程
May 25 Python
Python语法分析之字符串格式化
Jun 13 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
python pygame入门教程
Jun 01 Python
Python机器学习之基于Pytorch实现猫狗分类
Jun 08 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中的include、include_once、require以及require_once语句
2016/04/23 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
Python实现从订阅源下载图片的方法
2015/03/11 Python
python定时任务 sched模块用法实例
2019/11/04 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
团支部推优材料
2014/05/21 职场文书
学习普通话的体会
2014/11/07 职场文书
邀请书模板
2015/02/02 职场文书
音乐教师求职信范文
2015/03/20 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
日元符号 ¥
2022/02/17 杂记
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技