900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python使用random模块实现掷骰子游戏

Python使用random模块实现掷骰子游戏

时间:2019-05-04 22:54:19

相关推荐

Python使用random模块实现掷骰子游戏

Python使用random模块实现掷骰子游戏

引入内容题目要求编写开始模块的导入以及初始变量的定义开始比赛过程比赛结束以后统计结果完整代码

引入内容

根据人民邮电出版社出版的《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+=1elif a<b:score_B+=1else:level_score+=1a =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+=1else:level_score+=1a =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}')

本题结束,代码可作为借鉴使用。同学们也要注重思考,理解其中的代码含义。如有纰漏或不明之处可以在评论区讨论,让我们一起进步!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。