Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想知道有什么方法可以让这段代码在elif中使用嵌套if?_Python - Fatal编程技术网

Python 我想知道有什么方法可以让这段代码在elif中使用嵌套if?

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

我有以下代码。它基本上是一个障碍函数。它应该返回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'
def二十一点(a、b、c):
加法=总和([a,b,c])
如果在[a、b、c]中添加21和11:
损坏=增加-10
如果损坏>21:
返回“半身像”
返程受阻

如果
busted>21
true
则返回
“BUST”
,否则将转到下一条语句并返回
busted
。我不太明白为什么你需要另一种方法,但是如果你想根据一个条件返回两个不同的东西
if/elif
if/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)  )


无论如何,您仍然需要秋槽
“半身像”
(对于>21,不含11),因此
其他
解决方案更干净。

谢谢,但您的souliton没有给出“半身像”谢谢,帕特里克,您的解决方案很有趣,但de to BUST-11不够干净。我想这在筑巢中是不可能做到的。@StingerWolf-我刚刚重命名了它,这样你就可以看到哪个半身像来自哪里:)哦,你说得对,我的错,如果它被重命名,最后它会给出“半身像”,所以是的,我现在明白了,谢谢你的帮助,有时候有不同的视角真的很好。:)
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
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