liquid = [l_press,l_dosage,l_bottle,l_position,l_clog,l_counter]
for j in range(len(liquid)):
data = liquid_filling(liquid[j])
publish.single(liquid[j],data,qos = 0, hostname = hostname,port=2259)
def liquid_filling(topic):
if topic == "Liquid_filling/pressure":
message = random.uniform(4.0,5.0)
elif topic == "Liquid_filling/dosage":
message = random.uniform(495.0,505.0)
elif topic == "Liquid_filling/bottle_presence" or topic== "Liquid_filling/position" or topic=="Caps/position":
if i % 2 == 0:
message = 'YES'
else:
message = 'NO'
elif topic == "Liquid_filling/counter":
message = i
return message
我收到以下錯誤:
錯誤:分配前參考了區域變數“訊息”
我認為它一定與代碼的對齊方式有關,但我仔細檢查了它,我找不到任何問題。此外,變數 message 僅用于回傳值。
我已經在這個論壇上查看了其他相關問題,但我仍然找不到答案。
我會很感激你的幫助。
uj5u.com熱心網友回復:
在您的情況下,這種情況正在發生,因為由于某種原因,您的條件topic沒有通過。if
由于沒有else,當它沒有通過你沒有message定義的條件時,它會自動回傳,導致它找不到回傳。
對發送的值進行新的檢查以分析條件或測驗它沒有通過任何條件,添加:
else:
message = 'not pass conditions'
您將收到這個 ( not pass conditions) 值作為回傳,證明它沒有通過條件。
簡而言之:您正在代碼中的錯誤位置尋找問題。
uj5u.com熱心網友回復:
我解決了。那是我有一個名為“Caps/position”的主題,它應該命名為“Liquid_filling/position”。
有效的代碼如下:
def liquid_filling(topic):
if topic == "Liquid_filling/pressure":
message = random.uniform(4.0,5.0)
elif topic == "Liquid_filling/dosage":
message = random.uniform(495.0,505.0)
elif topic == "Liquid_filling/bottle_presence" or topic== "Liquid_filling/position" or topic=="Liquid_filling/anti_clogging":
if i % 2 == 0:
message = 'YES'
else:
message = 'NO'
elif topic == "Liquid_filling/counter":
message = i
else:
message = 'There is an error'
return message
感謝您的評論,因為我能夠意識到這個問題!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494945.html
標籤:Python python-3.x 变量 局部变量
上一篇:使Spyder變數具有顏色
下一篇:在Python中,當我只更新for回圈中的變數AverageU時,為什么我的變數StartingU會更新?代碼有什么問題?
