Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何定义';Ace&x27;在21点牌中是11还是1?_Python_Python 3.x - Fatal编程技术网

Python 我如何定义';Ace&x27;在21点牌中是11还是1?

Python 我如何定义';Ace&x27;在21点牌中是11还是1?,python,python-3.x,Python,Python 3.x,我正在尝试创建一个21点游戏。我唯一的问题是,如果有11个球员将被罚下手,如何将Ace改为1 我试过在玩家的手被打断时使用scores.append(Ace=1)。唯一的问题是,此后的每一张A现在都是1。因此,如果经销商有ace,则ace为1。如果我在结束时重新计算分数时尝试将其改回11,则球员分数现在有10个额外分数(将10添加到ace值1中得到11)。除了追加之外,我还尝试添加另一个字典,但我不知道如何实现另一个字典。我还试图完全重写我的程序,减少课程 我希望程序能够根据值将ace更改为1或

我正在尝试创建一个21点游戏。我唯一的问题是,如果有11个球员将被罚下手,如何将Ace改为1

我试过在玩家的手被打断时使用scores.append(Ace=1)。唯一的问题是,此后的每一张A现在都是1。因此,如果经销商有ace,则ace为1。如果我在结束时重新计算分数时尝试将其改回11,则球员分数现在有10个额外分数(将10添加到ace值1中得到11)。除了追加之外,我还尝试添加另一个字典,但我不知道如何实现另一个字典。我还试图完全重写我的程序,减少课程


我希望程序能够根据值将ace更改为1或11。我不知道还能尝试什么。如果这有助于帮助我理解如何做,我可以添加更多代码。

一个简单的数字之和无法捕获ace可能具有的两个值。相反,您需要添加一些额外的代码来处理blackjack的这一方面

一个相对简单的方法是在计算卡片的正常值的同时计算A的数量。如果你失败了,你可以调整分数,以10为增量,为你看到的每一张A(10,因为这是11和1之间的差异)


谢谢你的帮助。我曾在我制作的重写文件中尝试过这一点,但没有if c.getrank()=“Ace”:
def get_score(self):
    score = 0
    aces = 0
    for c in cards:
        score += c.get_score()      # aces should return a value of 11
        if c.getrank() == "Ace":    # count aces
            aces += 1

    while aces > 0 and score > 21:  # try to avoid a bust by changing ace values from 11 to 1
        score -= 10                 # until the bust has ben avoided, or you're out of aces
        aces -= 1

    return score