python中的错误:UnboundLocalError

时间:2014-12-14 17:45:32

标签: python

我想问我的编码有什么问题?

raspberry terminal show tis

"Traceback (most recent call last):
  File "case.py", line 88, in <module>
    forward(int(x),int(delay) / 1000.0)
  File "case.py", line 65, in forward
    setStep(1, 0, 1, 0)
UnboundLocalError: local variable 'setStep' referenced before assignment"
下面的

是我编码的一部分。

  def forward(x,delay):
   if x == 1 :
     print"motor does not move"
     forward(delay, step)
     for i in range(0, 0):
        setStep(1, 0, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(1, 0, 0, 1)
        time.sleep(delay)
        break


 elif x == 2 :
      for i in range(0, 13):
        setStep(1, 0, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(1, 0, 0, 1)
        time.sleep(delay)
        break

 elif x == 3 :
      for i in range(0,25):
        setStep(1, 0, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(1, 0, 0, 1)
        time.sleep(delay)
        break

 elif x == 4 :
      for i in range(0,38):
        setStep(1, 0, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(1, 0, 0, 1)
        time.sleep(delay)
        break

 elif x > 4 :
    print "the number does not exits , please enter a number between 1 to 4."

    def setStep(w1, w2, w3, w4):
        GPIO.output(coil_A_1_pin, w1)
        GPIO.output(coil_A_2_pin, w2)
        GPIO.output(coil_B_1_pin, w3)
        GPIO.output(coil_B_2_pin, w4)


while True:
  delay = raw_input("Delay between steps (milliseconds)?")
  x = raw_input("choose 1,2,3,4,where 1 move to 0 degree,2 move 90 degree, 3 move 180 degree,4 move 270 degree clockwise: ")
  forward(int(x),int(delay) / 1000.0)

1 个答案:

答案 0 :(得分:0)

我相信你在定义它之前使用的是setStep函数。尝试将setStep函数的定义移到上面尝试调用它的位置。