如果。。。埃利夫…埃尔斯

2024-06-06 04:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个带有if流控制的函数,我想知道一些关于它的事情。在

class Supplier(Process):

    def weeklySupply(self):
        global D1Vals
        xMeet = D1Vals[0]
        lead = 0
        capac = 150.0
        supply = 0
        if stocked.amount >= 15000:
            supply = 0
            yield put, self, stocked, supply
            S1Vals.append(0)
        elif supply >= capac:
            supply = capac
            yield put, self, stocked, supply
            S1Vals.append(capac)
        else:
            supply = random.triangular(.70 * xMeet , xMeet , xMeet * 1.05)
            yield put, self, stocked, supply
            print ('Week:'+'%6.0f:Supplied: %6.0f units. CurSupply = %6.0f' %
                   (now() + 1., supply, stocked.amount))
            yield hold, self, lead
            S1Vals.append(supply)
            del D1Vals[0]

我以为我编码的是:

  • 如果库存对象中的数量是>;=15000,则该对象生成零供应 或者,如果生成的供给值大于预定义的“capac”量,则供给值=“capac”。

  • 如果上述情况均不成立,则供应值将作为随机分布生成。但当我得到输出时,电源值确实超过了150的“capac”值。

我是否误解了如何进行流程?在


Tags: 对象selfifputamountyieldleadappend
2条回答

不要像您在问题中所做的那样,将if elif结构与某种类型的or混为一谈。仅当条件

if stocked.amount >= 15000:
    if supply >= capac:
        supply = capac
        yield put, self, stocked, supply
        S1Vals.append(capac)
     else:
        supply = 0
        yield put, self, stocked, supply
        S1Vals.append(0)
else:
    supply = random.triangular(.70 * xMeet , xMeet , xMeet * 1.05)
    ...

但只有在supply在函数开头没有用0初始化时,这才有效。在

似乎是一种享受,还有一些美好的事情让我去想。我能看到的唯一问题是我的S1Vals列表已经不再有零电源追加到列表中。我可以在我的输出图上看到这一点,也可以在我做len(S1Vals)时看到。您的建议最终的代码是:

if stocked.amount >= 15000:
        if supply >= capac:
            supply = capac
            S1Vals.append(capac)
            yield put, self, stocked, supply
        else: 
            supply = 0.0
            yield put, self, stocked, supply
            S1Vals.append(supply)
    else:
        supply = min(capac, random.triangular(.70 * xMeet , xMeet , xMeet * 1.05))
        yield put, self, stocked, supply
        print ('Week:'+'%6.0f:Supplied: %6.0f units. CurSupply = %6.0f' %
               (now() + 1., supply, stocked.amount))
        yield hold, self, lead
        S1Vals.append(supply)
        del D1Vals[0]

为了达到这个目的,我使用了上面来自MaxPower的流建议,也是min(supply,capac),并声明了一个global supply。最后一个问题似乎是supply = 0.0从来没有起作用,但它真的应该这样吗?在

相关问题 更多 >