【问题标题】:Python logic Black Jack simPython 逻辑 Black Jack sim
【发布时间】:2017-02-05 10:54:20
【问题描述】:

我不知道我在哪里做错了,但打印总是 100% 可能的胜利

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 中选一张卡并返回其卡号

def pickOneCard():
    return random.randint(1, 13)

检查 n 次模拟并打印结果

def multipleGames(n):

记录分数

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

一个一个地模拟n个游戏

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

检查分数并存储值

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

打印结果

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

模拟 100,000 个游戏的代码

multipleGames(100000)

【问题讨论】:

    标签: python


    【解决方案1】:

    检查您的缩进以检查获胜、失败或平局。你的 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 不等于10,所以它到达else,当它到达return -1 时,这也会为likelyVictory 添加一个。

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 2020-03-22
      • 2015-06-21
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多