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数据类型转换函数总结
Mar 11 Python
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
利用python循环创建多个文件的方法
Oct 25 Python
Djang的model创建的字段和参数详解
Jul 27 Python
python实现猜拳游戏
Mar 04 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
基于Python脚本实现邮件报警功能
May 20 Python
Python接口测试环境搭建过程详解
Jun 29 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 文件扩展名 获取函数
2009/06/03 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
Python调用C语言开发的共享库方法实例
2015/03/18 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python实现识别手写数字大纲
2018/01/29 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
西部世纪面试题
2014/12/05 面试题
计算机专业自我鉴定
2013/10/15 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
关爱残疾人标语
2014/06/25 职场文书
树转促学习心得体会
2014/09/10 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
护士2014年终工作总结
2014/11/11 职场文书
婚宴领导致辞
2015/07/28 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书