使用嵌套条件表达式

问题描述 投票:0回答:4

我从书中找到了一个练习,其中包含以下代码片段:

def binomial_coeff(n, k):
    """Compute the binomial coefficient "n choose k".

    n: number of trials
    k: number of successes

    returns: int
    """
    if k == 0:
        return 1
    if n == 0:
        return 0

    res = binomial_coeff(n-1, k) + binomial_coeff(n-1, k-1)
    return res

练习的目标是将 if 语句重写为嵌套条件表达式。我了解如何编写条件表达式,例如

return 1 if k == 0

我在这里缺少什么? 通过这样做嵌套,我似乎无法弄清楚。 PyCharm 不断抱怨代码的第二部分无法访问。

return 1 if k == 0 else return 0 if n == 0
python nested conditional-statements
4个回答
3
投票
return 1 if k == 0 else (0 if n == 0 else binomial_coeff(n-1, k) + binomial_coeff(n-1, k-1))

但严肃地说:你为什么要这么做?这实在是难以理解。


0
投票
def binomial_coeff(n, k):
    """Computes the binomial coefficient "n chose k".
    n: number of trials
    k: number of successes

    returns: int
    """
    return 1 if k == 0 else (0 if n == 0 else (binomial_coeff(n - 1, k) + binomial_coeff(n - 1, k - 1)))


bi_memo = {}


def binomial_coeff_memo(n, k):
    bi_memo[n, k] = 1 if k == 0 else (0 if n == 0 else (
        bi_memo[n, k] if (n, k) in bi_memo else (binomial_coeff_memo(n - 1, k) + binomial_coeff_memo(n - 1, k - 1))))
    return bi_memo[n, k]


if __name__ == '__main__':
    print(binomial_coeff(8, 3))
    print(binomial_coeff_memo(8, 3))

0
投票
def binomial_coeff(n, k):
    """Computes the binomial coefficient "n chose k".
    n: number of trials
    k: number of successes

    returns: int
    """
    return 1 if k == 0 else 0 if n == 0 else bico(n-1, k) + bico(n-1, k-1)

0
投票

有点晚了,但这是我的两分钱:

如果 k == 0,则返回 1,否则(如果 n == 0,则返回 0,否则 binomial_coeff(n - 1, k) + binomial_coeff(n - 1, k - 1))

说明:

条件表达式可以嵌套。如果基本语法是:

如果条件1,则返回值1,否则返回值2

然后,用 value2 替换另一个条件表达式(括号中),我们得到:

如果条件1 else则返回值1(如果条件2否则值3则返回值2)

这是解决练习所需的内容。

© www.soinside.com 2019 - 2024. All rights reserved.