一个朋友要我让她的编码更加“ pythonic”,但我本人还是很陌生。这是我想出的,我有点担心它不会达到所有数字(6、7、8、9、10和11)。我也知道有更好的方法,但是我只是不知道它是什么。你能帮忙吗?
prob = 0
for r in range(6,11):
prob += binom.pmf(k=r, n=11, p=0.2)
print(‘The probability is {}’,format(prob))
答案 0 :(得分:0)
使用列表理解:
def binom(n,r,p):
# dummy function
return n+r+p
prob = sum([binom(r,12, 0.2) for r in range(6,11)])
print(f"The probability is {prob}")
编辑: 要使11包含在内,请将范围增加到12
修改2: 根据{{3}}的建议,如果只需要计算总和,则可以删除方括号,如下所示:
prob = sum(binom(r,12, 0.2) for r in range(6,11))
答案 1 :(得分:0)
我认为您的代码完全是pythonic,因为这是值得的
通过列表理解,sum()
函数和f字符串,可以使其更紧凑,更高效。另外,我考虑到您希望将11包括在内,因此您的范围应从6到12。
probs = [binom.pmf(k=r, n=11, p=0.2) for r in range(6, 12)]
print(f'The probability is {sum(probs)}')