2017-05-02 47 views
-1

所以我正在Python中編寫一個腳本來運行一個覆盆子pi。我創建了一個名爲lift和python的函數,忽略了函數聲明及其跳入函數的權限,而不是忽略它並繼續前進。用python編寫而忽略我的函數聲明

def lift(): 
    print "lift" 
    sleep(20) 

    for i in range (4): 
     if stepperThreads[i].isAlive(): 
      lift() 
    for i in range (4): 
     stepperThreads[i] = Thread(target=stepper_worker, args=(steppers[i], 200, Adafruit_MotorHAT.FORWARD, stepstyle)) 
     stepperThreads[i].start() 

我有兩個其他功能之前,它們被忽略。我已經在其中放置了打印語句,但它們不能運行。我已經在我的升降功能之前,之後和之後放置了一個打印語句。前一個和該函數中的一個被觸發,但後一個不是。它暫停時停下來。

我是新來的python和學習,因爲我去了,但從我理解它的所有基於tab。我正在將它寫入net-beans,然後我進入並將標籤格式更改爲製表符而不是空格。我還拿着該文件,並在pi上編輯了nano的代碼。它只是一直忽略聲明和蒸汽權。

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune

+0

Prune, 對不起。它其實並不是一小部分,它依賴於其他一些類。我使用步進電機和操縱桿控制。 但我知道發生了什麼事。這是因爲你要求MCVE。當我正在經歷它時,我將所有我認爲可以做到的事情都剝離了。最終我拋出了一些修正它的東西,並縮小了它的範圍。 我想創建一個字典,其中包含函數調用。似乎當字典被創建時,它也稱爲函數。 對不起。 – Michael

+0

沒問題 - 你發現錯誤!如果這是一個解決方案,您可以發佈,請這樣做......以及最少的代碼來展示原始問題......並接受您自己的答案。如果不是,請刪除該問題。無論哪種方式,堆棧溢出將能夠妥善存檔的問題。 – Prune

回答

0

所以我想通了,我有問題。由於我還在學習python,因此我沒有正確創建一個字典來調用函數。

def lift(): 
    print "lift" 

    for i in range (4): 
     if not stepperThreads[i].isAlive(): 
      for i in range (4): 
       stepperThreads[i] = Thread(target=stepper_worker, args=(steppers[i], 300, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.DOUBLE)) 
       stepperThreads[i].start() 

    sleep(3) 

# Shut down method. releases motors and cleans GPIO 
def reset(): 
    print "Reset" 

    for i in range (4): 
     if not stepperThreads[i].isAlive(): 
      turnOffMotors() 

正如你在這裏看到的這些是我使用的兩個函數。我創建了一本詞典,所以我可以使用鍵來調用不同的功能。我實際上有12個不同的功能需要調用。所以我創造了這個字典,這裏只有6呼叫

motorFunc = {16: lift, 12: reset, 20: up, 26: down, 6: left, 13: right} 

我最初創建字典這樣

motorFunc = {16: lift(), 12: reset(), 20: up(), 26: down(), 6: left(), 13: right()} 

,當它被初始化將調用的函數,這是我的問題。所以我修正了字典的結構,現在它可以工作。

修剪感謝指出問題的結構,它使我通過代碼試圖儘量減少它,但獲得相同的結果。一旦我刪除了字典聲明,我就知道這是我的問題所在,並對其進行了一些研究。