BLACKJACK:给定介于1和11之间的三个整数,如果它们的总和小于或等于21,则返回它们的总和。如果它们的总和超过21并且为11,则将总和减少10。最后,如果总和(即使经过调整)也超过21,则返回'BUST
def black_jack(a,b,c):
if a+b+c <=21:
return a+b+c
elif a+b+c >21:
if (a or b or c) == 11:
return (a+b+c-10)
elif (a and b and c)!= 11:
return 'bust'
result = black_jack(9,9,11)
print(result)
答案 0 :(得分:3)
您在if
和elif
条件下犯了一个错误。
我邀请您来研究How to test multiple variables against a value这个问题,以了解如何正确处理布尔条件。
答案 1 :(得分:3)
if a == 11 or b == 11 or c == 11:
对于每个参数,或语句必须分开。
答案 2 :(得分:1)
@Jerbearone和@Cherlepops都指出,您的错误在于对等于11行或不等于11行的测试。
这应该有效:
def black_jack(a, b, c):
if a + b + c <= 21:
return a+b+c
elif a + b + c > 21:
# if (a or b or c) == 11:
if a == 11 or b == 11 or c == 11:
return (a+b+c-10)
# elif (a and b and c) != 11:
elif a != 11 and b != 11 and c != 11:
return 'bust'
if __name__ == "__main__":
# execute only if run as a script
result = black_jack(9, 9, 11)
print(result)