簡體   English   中英

Python 腳本問題,可能很簡單,但我對這段代碼沒有什么經驗

[英]Python Scripting question, probably very simple but I have little experience in this code

x = 1000
while x <= data['a2goodthousands'] * 1000:
    data['MyA2Good'] = x + data['a2goodhundreds']
    x = x + 1000

if 1 > data['a2goodthousands']:
    data['MyA2Good'] = data['a2goodhundreds']
        

以上是我寫的代碼。 它有效,但我想確切地了解它為什么有效。 最初,我寫了它,它奏效了,我繼續前進。 然后我開始思考為什么它會不斷更新? 有關更多解釋,數據來自只能存儲帶符號的 16 位的舊 PLC。 因此,最大數量為 32,676。 由於計數器會很快超過該值,因此每次達到 1000 時,我們都會在“千”計數器中加 1,並重置“百”。 不過,這會將我想要查看的實際數字放在兩個不同的詞中。 我在 Ignition 中編寫了這段代碼,將這兩個數字合並到一個位置。

話雖這么說,“千”標簽當然從 0 開始,所以底部的 if 語句一直存在,直到第一個 1000 被計算在內,它只查看數百個值。

我理解它的方式是,一旦我的“千”標簽加一,那一刻,我的 while 語句條件被等號運算符(x = 1000 和我的標簽 * 1000 = 1000)滿足,我加 1000 + 我的“Hundreds”計數器並將其存儲在新數據標簽“MyA2Good”中,然后將 x 加 1000 為 2000。話雖如此,直到我現在在計數器上達到 2000 之前,while 語句不應該再次評估,對吧? 但是,當監視存儲在我的標簽中的值時,“MyA2Good”隨着數百個計數器一次遞增 1,標簽會不斷更新,就好像 while 語句正在不斷評估一樣,即使評估的條件不再為真。

代碼正在做我想做的事,我只是想弄清楚為什么。

while x變量小於或等於data['a2goodthousands'] * 1000: while 循環正在運行。 每次運行時, data['MyA2Good']變量的值都會更改為x + ['a2goodhundreds'] ,並且在分配之后 x 是x + 1000 x大於或等於data['a2goodthousands'] * 1000時,while 循環結束並執行 if 語句。 如果1大於data['a2goodthousands'] ,則data['MyA2Good']變量等於data['a2goodhundreds']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM