21点模拟器(以供检查)
我写了一个二十一点的模拟器。我的目标是估算庄家爆掉的可能性。要注意的是,庄家在手牌总点数为16时必须继续抽牌,而在17时必须停牌。如果庄家的手牌中有一张王牌(A),那么当总点数在17到21之间时,这张王牌应该算作11点;否则,它就算作1点。这个程序看起来是正常工作的,但我不是特别确定。下面是程序的核心部分。你能帮我看看代码有没有问题吗?
def simNGames(n):
holds = busts = 0
for i in range(n):
score = simOneGame()
if score <= 21:
holds += 1
else:
busts += 1
return holds, busts
def simOneGame():
score = 0
cardsVal = [2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11]
while not gameOver(score):
dealerScore = choice(cardsVal)
# in case dealer hits an ace
if dealerScore == 11:
if score >= 6 and score <= 10:
score += 11
else:
score += 1
else:
score += dealerScore
return score
def gameOver(score):
return score >= 17 and score <= 21 or score >=22