Python使用random模塊實現(xiàn)擲骰子游戲的示例代碼
引入內(nèi)容
根據(jù)人民郵電出版社出版的《Python程序設計現(xiàn)代設計方法》P102習題中的第7題——擲骰子游戲,進行代碼編寫。
題目要求
一盤游戲中,兩人輪流擲骰子5次,并將每次擲出的點數(shù)累加,5局之后,累計點數(shù)較大者獲勝,點數(shù)相同則為平局。根據(jù)此規(guī)則實現(xiàn)擲骰子游戲,并算出50盤之后的勝利者( 50盤中嬴得盤數(shù)最多的,即最終勝利者)。
審題: 共有50盤游戲。一盤游戲有5局,每一局雙方各擲骰子一次,5局結束以后統(tǒng)計分數(shù),分數(shù)高的一方獲勝。至此,一盤游戲結束。50盤游戲結束后,贏得盤數(shù)最多的一方為最終勝利者。
編寫開始
↓↓↓開始奇妙Python之旅吧!↓↓↓
模塊的導入以及初始變量的定義
統(tǒng)一聲明變量,便于后續(xù)的管理和使用。
import random #導入模塊 # ↓↓↓ 定義初始變量 a =0 # 用來記錄人物A擲投擲的結果 b =0 # 用來記錄人物B擲投擲的結果 level_score =0 # 用來記錄雙方平局次數(shù) score_A =0 # 人物A的每小局勝利次數(shù) score_B =0 # 人物B的每小局勝利次數(shù)
開始比賽過程
本處用了for … in range(50)循環(huán)模擬進行50盤游戲。并在循環(huán)內(nèi)嵌套新的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 # 重置雙方分數(shù),并進入下一輪循環(huán)
b =0 # 重置雙方分數(shù),并進入下一輪循環(huán)
# 此處如果不重置分數(shù),本次投擲結果將會進入下一次循環(huán),有悖題目要求和比賽公平性。
比賽結束以后統(tǒng)計結果
前面我們對每盤游戲進行了模擬,現(xiàn)在我們要書寫題目最后的要求的代碼。
因為前面用了score_A和score_B作為用來記錄每盤游戲結束的變量,所以此處我們只需要對之前的變量進行大小比較即可。
if score_A>score_B: # 比較最終結果,游戲結束
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 #導入模塊
# ↓↓↓ 定義初始變量
a =0 # 用來記錄人物A擲投擲的結果
b =0 # 用來記錄人物B擲投擲的結果
level_score =0 # 用來記錄雙方平局次數(shù)
score_A =0 # 人物A的每小局勝利次數(shù)
score_B =0 # 人物B的每小局勝利次數(shù)
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 # 重置雙方分數(shù),并進入下一輪循環(huán)
b =0 # 重置雙方分數(shù),并進入下一輪循環(huán)
# 此處如果不重置分數(shù),本次投擲結果將會進入下一次循環(huán),有悖題目要求和比賽公平性。
if score_A>score_B: # 比較最終結果,游戲結束
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}')
到此這篇關于Python使用random模塊實現(xiàn)擲骰子游戲的示例代碼的文章就介紹到這了,更多相關Python random擲骰子內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python模擬投擲色子并數(shù)據(jù)可視化統(tǒng)計圖
這篇文章主要介紹了python模擬投擲色子并數(shù)據(jù)可視化統(tǒng)計圖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07
用python實現(xiàn)各種數(shù)據(jù)結構
這篇文章主要分享的是用python實現(xiàn)各種數(shù)據(jù)結構,快速排序、選擇排序、插入排序、歸并排序、堆排序heapq模塊等相關資料,感興趣的小伙伴可以參考一下2021-12-12
使用pickle存儲數(shù)據(jù)dump 和 load實例講解
今天小編就為大家分享一篇使用pickle存儲數(shù)據(jù)dump 和 load實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python導入引用其他文件的函數(shù)實戰(zhàn)案例(推薦!)
這篇文章主要給大家介紹了關于Python導入引用其他文件的函數(shù)的相關資料,文中通過代碼以及圖文介紹的非常詳細,對大家學習或者使用Python具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01
使用python實現(xiàn)一個簡單ping?pong服務器
這篇文章主要為大家介紹了使用python實現(xiàn)一個簡單ping?pong服務器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Python用戶推薦系統(tǒng)曼哈頓算法實現(xiàn)完整代碼
這篇文章主要介紹了Python用戶推薦系統(tǒng)曼哈頓算法實現(xiàn)完整代碼,簡單介紹了曼哈頓距離的定義,然后分享了其Python實現(xiàn)代碼,具有一定借鑒價值,需要的朋友可以了解下。2017-12-12
在matlab中創(chuàng)建類似字典的數(shù)據(jù)結構方式
這篇文章主要介紹了在matlab中創(chuàng)建類似字典的數(shù)據(jù)結構方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03

