Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果。。。Elif…Else流_Python_Flow - Fatal编程技术网

Python 如果。。。Elif…Else流

Python 如果。。。Elif…Else流,python,flow,Python,Flow,我创建了一个带有if流控制的函数,我想知道一些关于它的事情 class Supplier(Process): def weeklySupply(self): global D1Vals xMeet = D1Vals[0] lead = 0 capac = 150.0 supply = 0 if stocked.amount >= 15000: supply =

我创建了一个带有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”

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


我是否误解了如何做流程

不要像你在问题中所做的那样,将
if elif
构造与某种
混淆。只有当
if
条件为
False
时,才会评估
elif
条件。 我想,你真正想要的是:

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)
    ...

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

似乎很管用,还有一些好事情值得我考虑。我能看到的唯一问题是,现在我的S1VAL列表已停止将零供应附加到列表中。我可以在输出图上看到这一点,也可以在执行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
永远不会生效,但它真的应该?

哪里有
库存。数量定义?我猜你的
随机。三角形(.70*xMeet,xMeet,xMeet*1.05)
计算仍然可以高于
capac
。此外,你通常会产生4个值(
看跌,自我,库存,supply
),但在else分支中,您也会产生3个值(
hold、self、lead
)。确保消耗该生成器的任何东西都考虑到这一点,而不是“补充”第四个参数的值,该参数恰好是
supply
elif supply>=capac
条件将永远不会被输入,因为
supply
capac
在该点有固定值。@manengstudent:使用
min(电源,capac)
操作?这将限制电源容量。My
S1Vals.append(0)
在这个结构中停止运行,它似乎没有附加到列表中。您必须考虑您的条件之间的关系。在您的模型中,哪一个条件更强?@MaxPowers。我将其理解为主
if..else
stocked.amount>=15000
那么内部
if..else
需要要么决定,要么“外部”
else:
生效。当我读到它时,我的要求是:
supply=0
库存时。数量
超过15000
supply``不能大于
capac`任何其他情况都适合外部
else:
声明。