我从书中找到了一个练习,其中包含以下代码片段:
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
return 1 if k == 0 else (0 if n == 0 else binomial_coeff(n-1, k) + binomial_coeff(n-1, k-1))
但严肃地说:你为什么要这么做?这实在是难以理解。
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))
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)
有点晚了,但这是我的两分钱:
如果 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)
这是解决练习所需的内容。