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读文件逐行处理的示例代码分享
Dec 27 Python
python编写简单爬虫资料汇总
Mar 22 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
python和c语言的主要区别总结
Jul 07 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 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面向对象的使用教程 简单数据库连接
2006/11/25 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
PHP的PDO连接讲解
2019/01/24 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
Python open读写文件实现脚本
2008/09/06 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python 字典与字符串的互转实例
2017/01/13 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python实现感知机(PLA)算法
2017/12/20 Python
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
银行进社区活动总结
2014/07/07 职场文书
创先争优活动个人总结
2015/03/04 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
资料员岗位职责范本
2015/04/13 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
学生退学证明
2015/06/23 职场文书
公开致歉信
2019/06/24 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript