为什么我的elif不能正常工作?

时间:2020-05-15 09:59:08

标签: python python-3.x

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)

3 个答案:

答案 0 :(得分:3)

您在ifelif条件下犯了一个错误。

我邀请您来研究How to test multiple variables against a value这个问题,以了解如何正确处理布尔条件。

答案 1 :(得分:3)

在第5行尝试

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)