Python使用random模塊實(shí)現(xiàn)擲骰子游戲的示例代碼
引入內(nèi)容
根據(jù)人民郵電出版社出版的《Python程序設(shè)計(jì)現(xiàn)代設(shè)計(jì)方法》P102習(xí)題中的第7題——擲骰子游戲,進(jìn)行代碼編寫(xiě)。
題目要求
一盤(pán)游戲中,兩人輪流擲骰子5次,并將每次擲出的點(diǎn)數(shù)累加,5局之后,累計(jì)點(diǎn)數(shù)較大者獲勝,點(diǎn)數(shù)相同則為平局。根據(jù)此規(guī)則實(shí)現(xiàn)擲骰子游戲,并算出50盤(pán)之后的勝利者( 50盤(pán)中嬴得盤(pán)數(shù)最多的,即最終勝利者)。
審題: 共有50盤(pán)游戲。一盤(pán)游戲有5局,每一局雙方各擲骰子一次,5局結(jié)束以后統(tǒng)計(jì)分?jǐn)?shù),分?jǐn)?shù)高的一方獲勝。至此,一盤(pán)游戲結(jié)束。50盤(pán)游戲結(jié)束后,贏得盤(pán)數(shù)最多的一方為最終勝利者。
編寫(xiě)開(kāi)始
↓↓↓開(kāi)始奇妙Python之旅吧!↓↓↓
模塊的導(dǎo)入以及初始變量的定義
統(tǒng)一聲明變量,便于后續(xù)的管理和使用。
import random #導(dǎo)入模塊 # ↓↓↓ 定義初始變量 a =0 # 用來(lái)記錄人物A擲投擲的結(jié)果 b =0 # 用來(lái)記錄人物B擲投擲的結(jié)果 level_score =0 # 用來(lái)記錄雙方平局次數(shù) score_A =0 # 人物A的每小局勝利次數(shù) score_B =0 # 人物B的每小局勝利次數(shù)
開(kāi)始比賽過(guò)程
本處用了for … in range(50)循環(huán)模擬進(jìn)行50盤(pán)游戲。并在循環(huán)內(nèi)嵌套新的for … in …range(5)作為每盤(pán)游戲中進(jìn)行5次過(guò)程的模擬
for x in range(50): # 進(jìn)行50盤(pán)比賽
for n in range(5): # 模擬雙方每盤(pán)搖5次骰子
person_A =random.randint(1,6) # 使用random模塊的randit進(jìn)行1~6模擬搖骰子的過(guò)程
a +=person_A # 將投擲結(jié)果保存
person_B =random.randint(1,6)# 使用random模塊的randit進(jìn)行1~6模擬搖骰子的過(guò)程
b +=person_B # 將投擲結(jié)果保存
if a>b: # 比較雙方投擲結(jié)果總和,將比較結(jié)果保存至本場(chǎng)比賽最終結(jié)果
score_A+=1
elif a<b:
score_B+=1
else:
level_score+=1
a =0 # 重置雙方分?jǐn)?shù),并進(jìn)入下一輪循環(huán)
b =0 # 重置雙方分?jǐn)?shù),并進(jìn)入下一輪循環(huán)
# 此處如果不重置分?jǐn)?shù),本次投擲結(jié)果將會(huì)進(jìn)入下一次循環(huán),有悖題目要求和比賽公平性。
比賽結(jié)束以后統(tǒng)計(jì)結(jié)果
前面我們對(duì)每盤(pán)游戲進(jìn)行了模擬,現(xiàn)在我們要書(shū)寫(xiě)題目最后的要求的代碼。
因?yàn)榍懊嬗昧藄core_A和score_B作為用來(lái)記錄每盤(pán)游戲結(jié)束的變量,所以此處我們只需要對(duì)之前的變量進(jìn)行大小比較即可。
if score_A>score_B: # 比較最終結(jié)果,游戲結(jié)束
print(f'本次比賽A勝,A總分為:{score_A},B總分為:{score_B},比賽期間平局次數(shù)為:{level_score}')
elif score_A<score_B:
print(f'本次比賽B勝,A總分為:{score_A},B總分為:{score_B},比賽期間平局次數(shù)為:{level_score}')
else:
print(f'本次比賽平局,雙方總分:A{score_A} vs B{score_B},比賽期間平局次數(shù)為:{level_score}')
完整代碼
import random #導(dǎo)入模塊
# ↓↓↓ 定義初始變量
a =0 # 用來(lái)記錄人物A擲投擲的結(jié)果
b =0 # 用來(lái)記錄人物B擲投擲的結(jié)果
level_score =0 # 用來(lái)記錄雙方平局次數(shù)
score_A =0 # 人物A的每小局勝利次數(shù)
score_B =0 # 人物B的每小局勝利次數(shù)
for x in range(50): # 進(jìn)行50盤(pán)比賽
for n in range(5): # 模擬雙方每盤(pán)搖5次骰子
person_A =random.randint(1,6) # 使用random模塊的randit進(jìn)行1~6模擬搖骰子的過(guò)程
a +=person_A # 將投擲結(jié)果保存
person_B =random.randint(1,6)# 使用random模塊的randit進(jìn)行1~6模擬搖骰子的過(guò)程
b +=person_B # 將投擲結(jié)果保存
if a>b: # 比較5局以后雙方投擲結(jié)果總和,將比較結(jié)果保存至本場(chǎng)比賽最終結(jié)果
score_A+=1 # A本盤(pán)獲勝
elif a<b: # B本盤(pán)獲勝
score_B+=1
else:
level_score+=1
a =0 # 重置雙方分?jǐn)?shù),并進(jìn)入下一輪循環(huán)
b =0 # 重置雙方分?jǐn)?shù),并進(jìn)入下一輪循環(huán)
# 此處如果不重置分?jǐn)?shù),本次投擲結(jié)果將會(huì)進(jìn)入下一次循環(huán),有悖題目要求和比賽公平性。
if score_A>score_B: # 比較最終結(jié)果,游戲結(jié)束
print(f'本次比賽A勝,A總分為:{score_A},B總分為:{score_B},比賽期間平局次數(shù)為:{level_score}')
elif score_A<score_B:
print(f'本次比賽B勝,A總分為:{score_A},B總分為:{score_B},比賽期間平局次數(shù)為:{level_score}')
else:
print(f'本次比賽平局,雙方總分:A{score_A} vs B{score_B},比賽期間平局次數(shù)為:{level_score}')
到此這篇關(guān)于Python使用random模塊實(shí)現(xiàn)擲骰子游戲的示例代碼的文章就介紹到這了,更多相關(guān)Python random擲骰子內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)組并集交集補(bǔ)集代碼實(shí)例
這篇文章主要介紹了Python數(shù)組并集交集補(bǔ)集代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Appium Python自動(dòng)化測(cè)試之環(huán)境搭建的步驟
這篇文章主要介紹了Appium Python自動(dòng)化測(cè)試之環(huán)境搭建的步驟,以32位的Windows 7操作系統(tǒng)為例介紹Appium+Python的環(huán)境搭建步驟,感興趣的小伙伴們可以參考一下2019-01-01
Python并發(fā)編程的幾種實(shí)現(xiàn)方式
Python并發(fā)編程讓程序能同時(shí)執(zhí)行多個(gè)任務(wù),Python提供多種并發(fā)實(shí)現(xiàn)方式,包括多線程、多進(jìn)程、異步編程等,多線程受全局解釋器鎖(GIL)影響,在CPU密集型任務(wù)上不提升性能,但適合I/O密集型任務(wù),多進(jìn)程適用于CPU密集型任務(wù)2024-10-10
python構(gòu)造函數(shù)init實(shí)例方法解析
這篇文章主要介紹了python構(gòu)造函數(shù)init實(shí)例方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
簡(jiǎn)單了解python中對(duì)象的取反運(yùn)算符
這篇文章主要介紹了簡(jiǎn)單了解python中對(duì)象的取反運(yùn)算符,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python利用Beautiful Soup模塊修改內(nèi)容方法示例
Beautiful Soup是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python 庫(kù)。它能夠通過(guò)你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航、查找、修改文檔的方式。他還能夠修改HTML/XML文檔的內(nèi)容。這篇文章主要介紹了Python利用Beautiful Soup模塊修改內(nèi)容的方法,需要的朋友可以參考下。2017-03-03

