试图制作一种二十一点游戏
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:
总结问题
我正在尝试制作一个简单的二十一点程序,为庄家 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: