【发布时间】:2022-01-19 19:50:24
【问题描述】:
总结问题
我正在尝试制作一个简单的二十一点程序,该程序为庄家 1-11 选择两个数字,同时为玩家 1-11 选择两个数字。我想制作一个循环,根据玩家输入、击中或停留的内容来检查玩家是否击中或停留。如果他们击中,我希望它在玩家牌组中添加一张牌,并让他们选择再次击中或留下。
如果他们留下,我希望经销商检查一组规则,这些规则是:
1: 庄家是否少于 17 且是否少于玩家 1a:如果它确实有小于 17 并且小于玩家,它将绘制一个新的数字 1-11 并将其添加到庄家手中 1b:然后会运行检查是否有以下条件的循环
2: 庄家有 17-21 有没有多于闲家 2a:如果它有任何数字 17-21 并且它比玩家多,那么它将打印一条获胜消息
3:庄家是否有超过 21 3a:如果超过 21 则打印房屋破灭消息
4:庄家是否比玩家拥有更多 4a:如果庄家比玩家多(但由于之前的检查而少于 21),那么它会打印一个房子赢消息
这就是我尝试使用stay 命令完成的任务,到目前为止我还没有发现任何问题。
我的命中命令不会注册,即使我不输入stay..我试图通过让它打印一条消息并在我输入hit时结束循环来调试它,但它仍然通过stay命令运行无论如何,我认为这可能是我的输入转换为字符串的问题。
不要对我太苛刻,我上周才自学了如何编码,然后从 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 语句用于扫描单词 hit 或 Hit 在 stay 之前,并且我尝试将 stay 命令设置为 if 和 elif 语句,并且出于某种原因,无论您键入什么它通过保持命令而不是命中命令。我想知道将整个事情变成一个函数并在循环中调用它是否更容易,但我还是太新了,无法完全理解。
标签: python if-statement blackjack