2017-02-05 6 views
1

私は間違いなく、印刷は常にデッキを設定する可能性が高いの勝利100%PythonのロジックブラックジャックSIM

import random 

であり、単一のゲームのスコア

def singleGame(): 
    cardsVal = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10] # deck of cards 
    onhandScore = 17 # score on hand 
    cardNumber = pickOneCard() 
    newCardValue = cardsVal[cardNumber - 1] 
    onhandScore = onhandScore + newCardValue 

チェックを確認しましたところ、私は把握することはできません勝てば、

if onhandScore > 21: 
    result = 1 
elif onhandScore == 21: 
    result = 0 
else: 
    result = -1 

return result 

13の一枚のカードを選び、そのカード番号

を返すを失うか、タイn個のシミュレーションのための
def pickOneCard(): 
    return random.randint(1, 13) 

チェックし、n個のゲームを一

for i in range(n): 
    result = singleGame() 

チェック得点と店舗

値ずつをシミュレート

defeat = 0; 
certainVictory = 0; 
likelyVictory = 0; 

を得点記録するには結果

def multipleGames(n): 

を印刷

if result == 1: 
    defeat += 1 
elif result == 0: 
    certainVictory += 1 
else: 
    likelyVictory += 1 

totalPer = (defeat + certainVictory + likelyVictory) 
defeatPer = float("{0:.2f}".format(defeat * 100/ totalPer)) 
certainVictoryPer = float("{0:.2f}".format(certainVictory * 100/ totalPer)) 
likelyVictoryPer = 100 - defeatPer - certainVictoryPer 

合計の割合を計算する印刷は、勝利をチェックするために、あなたのインデントを確認失うまたはタイ10万ゲーム

multipleGames(100000) 

答えて

2

ためのコードをシミュレート

print 'Defeats: ',defeatPer,'%' 
print 'Certain victories: ',certainVictoryPer,'%' 
print 'Likely victories: ',likelyVictoryPer,'%' 

結果。 return文はif文の外にあるはずです。

if onhandScore > 21: 
    result = 1 
elif onhandScore == 21: 
    result = 0 
else: 
    result = -1 

return result 

このため、整数値はelseの場合にのみ返されます。それ以外の場合、関数はデフォルトでNoneを返します。今我々がここに到達するとき。

if result == 1: 
    defeat += 1 
elif result == 0: 
    certainVictory += 1 
else: 
    likelyVictory += 1 

Noneそれはelseに到達し、それがない場合return -1これもlikelyVictoryための1つを追加していない同等1又は0を行います。

関連する問題