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。因此,最大数量为32676。由于计数器将很快超过这个值,每次它达到1000,我们在“千”计数器中加1,并重置“百”。这就把我想要查看的实际数字用两个不同的词表示。我在Ignition中编写了这段代码,将两个数字合并为一个点
也就是说,“千”标记当然是从0开始的,因此底部的if语句一直存在,直到第一个1000被计数,它只查看百分之一百的值
我理解它的方式是,一旦我的“千”标记计数为一,在那一刻,我的while语句条件由相等运算符(x=1000和我的标记*1000=1000)满足,我添加1000+我的“百”计数器,并将其存储在新的数据标记“MyA2Good”中,然后将x乘以1000计数为2000。话虽如此,while语句在我的计数器上达到2000之前不应该再次求值,对吗?但是,当监控存储在我的标记“MyA2Good”中的值时,随着百位计数器一次递增1,标记会不断更新,就好像在不断计算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']
相关问题 更多 >
编程相关推荐