python - 你如何让生成器释放一个值?
问题描述
目前我正在尝试使用 Python 制作二项式系数。所以我尝试创建 3 个不同的生成器,一个用于 n!, k! 和 (nk)!。因为我知道 return 不会返回一个值,而是一个存储内存的位置,所以我尝试使用 yield。但是,如果我将 yield 如下所示,它会以某种方式存储另一个内存,而不是在 ans 公式中相互分割。我仍然感到困惑,因为我认为这是我的缩进,但是当我摆弄它时,它只是不断给出错误消息。任何人都可以帮助修改它以释放一个值吗?我只想让生成器吐出值,以便它们可以用于最后一行中的 ans 公式。
def binom_coeff(n,k):
def fact(n):
basic = 1
for i in range(1,n+1):
basic = basic * i
yield basic
def fact(k):
basic_3 = 1
for j in range(1,j+1):
basic_3 = basic_3 * j
yield basic_3
def fact_d(n,k):
basic_2 = 1
for m in range(1, n-k+1):
basic_2 = basic_2 * m
yield basic_2
ans = basic / (basic_3 * basic_2)
return ans
解决方案
我不认为你想要一个发电机在这里。Justreturn basic
等。这些语句应该在函数内部。目前,yield
声明不是。
即使您确实想使用生成器,也永远不会调用这些函数。此外,还有一些错别字。
def binom_coeff(n,k):
def fact(n):
basic = 1
for i in range(1, n+1):
basic = basic * i
return basic
ans = fact(n) / (fact(k) * fact(n-k))
return ans
推荐阅读
- google-sheets - 如何使 X 单元格空白直到 Y 单元格填满?
- java - 我在上传文件时遇到问题,出现此错误:找到接口 org.apache.poi.util.POILogger,但应使用类
- iphone - iphone 设备的 Vmware 和 Virtualbox 问题
- r - 用 R 中的正确日期替换错误的日期
- sitefinity - 访问小部件停止处理
- javascript - Cheerio 选择的现有属性有时会返回未定义(使用 Puppeteer 获取 HTML)
- ruby-on-rails-6 - Rails 6 GlideJS 轮播问题(没有 jquery)
- python - 如何查看已删除列的列表?
- java - InputMismatchException 需要更多输入吗?
- c# - 2D AABB 碰撞解决多角案例问题 C#