<p>回报比收益好吗?据我所知。在这种情况下,我很难从if语句获取迭代。基本上,程序所做的就是取两点,开始和结束。如果两个点相距至少10英里,则取一个随机样本。最后显示的if语句适用于从起点begMi开始的前20英里。n计数器长度=10,是班级成员。所以问题是,如何使代码适应return语句而不是yield语句的工作环境?或者在这种情况下,收益率声明可以吗?在</p>
<pre><code>def yielderOut(self):
import math
import random as r
for col in self.fileData:
corridor = str(col['CORRIDOR_CODE'])
begMi = float(col['BEGIN_MI'])
endMi = float(col['END_MI'])
roughDiff = abs(begMi - endMi)
# if the plain distance between two points is greater than length = 10
if roughDiff > nCounter.length:
diff = ((int(math.ceil(roughDiff/10.0))*10)-10)
if diff > 0 and (diff % 2 == 0 or diff % 3 == 0 or diff % 5 == 0)\
and ((diff % roughDiff) >= diff):
if (nCounter.length+begMi) < endMi:
vars1 = round(r.uniform(begMi,\
(begMi+nCounter.length)),nCounter.rounder)
yield corridor,begMi,endMi,'Output 1',vars1
if ((2*nCounter.length)+begMi) < endMi:
vars2 = round(r.uniform((begMi+nCounter.length),\
(begMi+ (nCounter.length*2))),nCounter.rounder)
yield corridor,begMi,endMi,'Output 2',vars1,vars2
</code></pre>
<p>所以roughdiff等于两点之间的差,并被四舍五入到最接近的10。然后减去10,这样样本就从整个10英里的路段上取下;这就变成了diff。所以让我们假设一个24的粗略diff四舍五入到20,20-10,diff+起始点=样本取自mi 60和70之间,而不是70和80之间。在</p>
<p>这个程序很管用,但我认为用回报率代替收益率会更好。不是程序员。在</p>