【发布时间】:2020-02-02 07:18:57
【问题描述】:
我正在尝试解决一个简单的编码练习:给定 1 到 11 之间的三个整数,如果它们的总和小于或等于 21,则返回它们的总和。如果它们的总和超过 21 并且有 11,则减少 11。最后,如果总和(即使经过调整)超过 21,则返回 'BUST'
def blackjack(a,b,c):
for i in range(0,12):
if sum((a,b,c)) <= 21:
return sum((a,b,c))
elif sum ((a,b,c)) > 21 and 11 in (a,b,c):
if a == 11:
a -= 10
continue
if b == 11 and sum((a,b,c)) > 21:
b -= 10
continue
if c == 11 and sum((a,b,c)) > 21:
c -=10
break
return sum((a,b,c))
else:
return 'Bust'
print(blackjack(11,11,11))
我预计 print(blackjack(11,11,11)) 的输出是 13,但我没有得到。
【问题讨论】:
-
根据二十一点的规则,3 A 是 13,而不是 3。
-
你可以不将 a 或 b 或 c 减少 10,而只需使用一些变量来保存它们的总和,如果一张牌是 Ace,则从该变量中减少 10
标签: python python-2.7