2017-12-01 4 views
-1

私はラボテストソフトウェアに取り組んでいます。私はバックボーンステージにあります。ここでテスト変数のスローエラーをテストする

はコードです:

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) 

は基本的に、それはレベルをチェックしていますし、レベルが特定のポイントに達した場合 - それは問題になる可能性があるため、問題=真を。

レベルが低くなると緊急停止します。私のやり方によっては、エラーが発生します。

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 

ありがとう!

+0

あなたはこのライン 'クラスlabTesting(オブジェクト)を持っている::'メイン 'で()'とインデントがオフになっている次のようにあなたはオーバー__init__方法にissueを渡すことで、これを来ることができます。 – srig

+0

ここでの問題は、最初の条件が満たされない場合、変数 'issue'が定義されていないことです。 'main'に' issue = false'を書くと、その変数は 'main'関数のスコープ内にしか存在しないので、他の場所で定義されるまでその関数の外部ではアクセスできません。 – Tim

+0

コードのインデントが不十分で、不完全です。 –

答えて

0

あなたが持っているものmainあなたはたぶんプログラムのトップで走りたいと思うかもしれません。 mainを実行しても、それらの変数はローカルでのみインスタンス化されます。したがって、issueだけ多分に「真」に設定されているだけでなく(インスタンス化することができます。余談として

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

、Pythonはブール値を持っているあなたはちょうどそのissue = Trueを行う、とすることができ文がすることができます。ただif issue ...に簡略化され

+0

ありがとうございます。それは今働いている。 – user6230466

0

エラーを言うあなたはそれを割り当てする前に、すべての、あなたはissueを参照している ブレークダウン:。。あなたはしかし、問題を定義し

mainでは、クラスのメソッド__init__内で比較が行われています。 __init__メソッドの範囲では、issueは定義されていません。

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

申し訳ありませんが、私はあなたがどこから来ているか完全に理解していません。あなたは精緻化できますか? – user6230466

+0

'issue'は呼び出される' __init__'メソッドの中に存在しません。問題を '__init__'メソッドに渡すと、そこに存在し(割り当てられます)、それを参照できます。 –

関連する問題