这个代码是否有办法与嵌套的if和elif一起工作?

2024-09-29 21:21:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码。它基本上是一个障碍函数。它应该返回3个数字的总和小于21。如果更大,并且其中有11个数字,它应该从中减去10。如果扣除后金额仍然大于21,则应返回“半身像”。在训练中,José通过在elif中使总和小于或等于31来解决最后一部分,这当然是一个很好的方法,可以在else中“半身像”,而不是嵌套在elif中。 然而,我想通过将“半身像”嵌套到elif中来消除我的锻炼方式。我猜,到目前为止还没有运气,因为这次回归,我不能在事后提出任何条件

你们有没有办法让“半身像”成为elif的子条件?这是我的代码,它不起作用

def blackjack(a,b,c):
    added = sum([a,b,c])
    if added <= 21:
        return added
    elif added > 21 and 11 in [a,b,c]:
        return added -10
        busted = added -10
        if busted > 21:
            return 'BUST'

如果调用,应给出以下信息:

    blackjack(5,6,7) --> 18
    blackjack(9,9,9) --> 'BUST'
    blackjack(9,9,11) --> 19

Tags: 函数代码addedreturnif数字条件金额
2条回答
def blackjack(a,b,c):
    added = sum([a,b,c])
    if added <= 21:
        return added
    elif added > 21 and 11 in [a,b,c]:
        busted = added -10 
        if busted > 21:
            return 'BUST'
        return busted

如果busted > 21true,它返回'BUST',如果不是,它移动到下一个语句并返回busted。我不太明白为什么你需要另一种方法,但是如果你想根据一个条件返回两个不同的东西if/elifif/else块是必须的

您可以在返回时使用三元表达式:

def blackjack(a,b,c):
        added = sum([a,b,c])
        if added <= 21:
            return added
        elif added > 21 and 11 in [a,b,c]:
            return (added-10) if (added-10 <= 21) else "BUST-11"

        return "BUST"

print( blackjack(5,6,7)  )
print( blackjack(9,9,9)  )
print( blackjack(9,9,11)  )
print( blackjack(10,11,11)  )

输出:

18
BUST
19
BUST-11

Does Python have a ternary conditional operator?

您仍然需要下降槽"BUST"(用于>;21 w/o 11)无论如何-因此else溶液更干净

相关问题 更多 >

    热门问题