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