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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
离线安装Pyecharts的步骤以及依赖包流程
Apr 23 Python
Python中单、双下划线的区别总结
Dec 01 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
对Python 数组的切片操作详解
Jul 02 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
python中的字符串内部换行方法
Jul 19 Python
Python subprocess库的使用详解
Oct 26 Python
基于python实现高速视频传输程序
May 05 Python
Python tkinter三种布局实例详解
Jan 06 Python
Python HTMLTestRunner库安装过程解析
May 25 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 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
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
jQuery知识点整理
2015/01/30 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
经典促销广告词大全
2014/03/19 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
补充协议书
2015/01/28 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题