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的列表中利用remove()方法删除元素的教程
May 21 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
python实现随机梯度下降(SGD)
Mar 24 Python
python爬虫之urllib3的使用示例
Jul 09 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
在python shell中运行python文件的实现
Dec 21 Python
如何用Python 加密文件
Sep 10 Python
浅谈Python __init__.py的作用
Oct 28 Python
python调用百度AI接口实现人流量统计
Feb 03 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生成xml简单实例代码
2009/12/16 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
Flask框架模板继承实现方法分析
2019/07/31 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
财务经理岗位职责
2013/11/09 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
环保守法证明
2015/06/24 职场文书
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫