试图制作一种二十一点游戏

Trying to make a blackjack game kind of

总结问题

我正在尝试制作一个简单的二十一点程序,为庄家 1-11 选择两个号码,为玩家 1-11 也选择两个号码。我想制作一个循环,根据玩家输入、击中或停留的内容检查玩家是在击中还是停留。如果他们击中,我希望它能在玩家牌组中添加一张牌,并让他们可以选择击中或再次停留。

如果他们留下来,我希望经销商检查一套规则,这些规则是:

1: 庄家的点数是否小于17且是否小于闲家 1a:如果它确实少于 17 且少于玩家,它将绘制一个新数字 1-11 并将其添加到庄家手中 1b: 之后会运行循环检查是否满足以下条件

2: 庄家有 17-21 和是否比闲家多 2a:如果它有任何数字 17-21 并且它比玩家多那么它会打印一条获胜消息

3:庄家是否有超过21 3a:如果它超过 21,那么它将打印一条 house busted 消息

4:庄家比闲家多 4a:如果庄家的牌多于闲家(但由于之前的检查而少于 21),那么它会打印庄家赢消息

这就是我试图用 stay 命令完成的,到目前为止我还没有发现任何问题。

然而,我的命中命令不会注册,即使我不输入 stay.. 我正在尝试通过打印一条消息并在我输入命中时结束循环来调试它,但它仍然 运行s 无论如何,我认为这可能是我的输入转换为字符串的问题。

不要对我太苛刻,哈哈,我上周才自学了如何编码并从 python 开始。

这是我遇到问题的代码:

'''

                    else:

                        hitstay = True

                        while hitstay:
                            action = str(input("hit or stay? "))
                            dealer = sum(dealer_cards)
                            player = sum(player_cards)
                            if action == 'stay' or 'Stay':
                                if dealer < 17 and dealer < player:
                                    dealer_cards.append(random.randint(1, 11))
                                    dealer = sum(dealer_cards)
                                    print(f"Dealer pulls {dealer_cards[-1]}\n"
                                          f"Dealer now has {sum(dealer_cards)}")
                                    if 17 <= dealer <= 21 and dealer > player:
                                        print(f"House won! Dealer cards: {dealer_cards}, {sum(dealer_cards)}\n"
                                              f"Player cards: {player_cards}, {sum(player_cards)}")
                                        playing = False
                                        hitstay = False
                                    elif dealer > 21:
                                        print(f'House busted! Dealer cards: {dealer_cards}')
                                        playing = False
                                        hitstay = False
                                    elif dealer > player:
                                        print(f'House wins, Dealer cards {dealer_cards}, {sum(dealer_cards)}\n'
                                              f'Player cards: {player_cards}, {sum(player_cards)}')
                                        playing = False
                                        hitstay = False
                            if action == 'hit' or 'Hit':
                                print('command hit')
                                playing = False
                                hitstay = False

'''

而不是:

if action == 'stay' or 'Stay':

做:

if action == 'stay' or action == 'Stay':

或:

if action in ('stay', 'Stay'):

或最重要的是:

if action.lower() == 'stay':

第一个版本不起作用,因为它被解释为:

if (action == 'stay') or 'Stay':

等同于:

if (action == 'stay') or True:

等同于:

if True: