测试变量抛出错误

2024-05-12 22:33:40 发布

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

我正在开发一个实验室测试软件——我正处于主干阶段,我只是想测试紧急停止是否能在故障发生之前识别出故障

代码如下:

import sys

def main(argv):
    currentTempAverage = 0;
    testingPlaced = False
    typeOfTesting = False
    issue="False"
    class labTesting(object):

def __init__(self,currentCondition,emergencyStop=0):
    self.output = labLog()
Conditions = []
    self.status = "OPEN"
    self.beginningCondition = currentCondition
    self.EndingCondition = ""
    self.output.log("Testing opened")

if float(currentCondition) > float(self.beginningCondition*1.003):
    issue="True"

if (issue=="True") and float(currentCondition) < float(beginningCondition*1.002):
        self.output.log("YIKES!")
        self.status="CLOSED"

    if (emergencyStop):
        self.emergencyStop = currentCondition - emergencyStop
    self.output.log("stop loss") 

def close(self,currentCondition):
    if currentCondition > (self.beginningCondition * 1.012717049):
        self.status = "CLOSED"
        self.EndingCondition = currentCondition

def tick(self, currentCondition):




def showTesting(self):
    testingStatus = "Entry Condition: "+str(self.beginningCondition)

    self.output.log(testingStatus)

基本上,它是检查级别,如果级别达到某个点-issue=true,因为它可能会成为一个问题

如果液位降低,则会执行紧急停止。取决于我怎么做,它会抛出错误

Traceback (most recent call last):
  File "/home/DDesm/Desktop/w/labtest/testing.py", line 18, in tick
    if (issue=="True") and float(currentPrice) < float(entryPrice*1.002):

     UnboundLocalError: local variable 'issue' referenced before  assignment

谢谢


Tags: selflogfalsetrueoutputifdefstatus
2条回答

你所拥有的main你可能只想在程序的顶端运行。即使您确实运行了main,这些变量也只能在本地实例化。因此,issue只能实例化(以及在以下位置设置为“True”):

if float(currentCondition) > float(self.beginningCondition*1.003):
    issue="True"

另外,Python确实有布尔值。您可以只执行issue = True,然后将if语句简化为if issue ...

错误说明了一切,您在分配它之前引用了issue细分:

然而,在您定义的问题main中,比较是在类的__init__方法中进行的。在__init__方法的范围内,未定义问题。您可以通过将issue传递给__init__方法来解决此问题,如下所示:

def __init__(self,currentCondition,issue,emergencyStop=0):

相关问题 更多 >