对于循环未执行(每次"11"出现在列表中时尝试更改变量)二十一点



我需要编写一种方法来确定21点手牌是否是半身像,如果不是,我需要返回手牌的总和。我的for循环似乎不起作用。如果手上有一个11(Ace(,并且手的原始和大于21,我试图从手的和中减去10。我知道现在变量"newsum"将被打印两次。这是由我来确定for循环是否正常运行的。

blackjack = [5,11,7]
newsum = sum(blackjack)
if sum(blackjack) <= 21:
print(sum(blackjack))
elif sum(blackjack) > 21:
for n in blackjack:
if n == 11:
newsum = newsum - 10
print(newsum)
break
newsum <= 21
if newsum <= 21:
print(newsum)
else:
print("BUST")

试试这个:

blackjack = [5, 11, 7]
newsum = sum(blackjack)
if sum(blackjack) >= 21:
for card in blackjack:
if card == 11:
newsum = newsum - 10
if newsum >= 21:
print(f"BUST (Your Hand: {sum(blackjack)})")
else:
print("Your Hand:", newsum)
else:
print("Your Hand:", sum(blackjack))

你只需要删除break语句,真的。

我相信你的for循环正在执行,只是你的break语句在第一次循环时就脱离了循环。您可能需要将break语句缩进到if语句中。

最新更新