Python 如果状态更改,如何打印一次(无多次)?

Python 如果状态更改,如何打印一次(无多次)?,python,if-statement,Python,If Statement,我有一个代码来读取模拟数据,然后像数字一样打印出来(开、关)。当状态为ON时,我在屏幕上看到多个ON;当它关闭时,我在屏幕上看到多个关闭。阅读后,我会将数据传输到谷歌电子表格。所以我只需要在状态改变时转移。我在这里讨论了一些话题,但我没有找到我想要的。如果我能找到一个解决方案,我想它会对人们有所帮助 这是我的密码: while True: if sensor > 1.60: Status = 'ON' else: Status = 'OFF' print("St

我有一个代码来读取模拟数据,然后像数字一样打印出来(开、关)。当状态为ON时,我在屏幕上看到多个ON;当它关闭时,我在屏幕上看到多个关闭。阅读后,我会将数据传输到谷歌电子表格。所以我只需要在状态改变时转移。我在这里讨论了一些话题,但我没有找到我想要的。如果我能找到一个解决方案,我想它会对人们有所帮助

这是我的密码:

 while True:
  if sensor > 1.60:
   Status = 'ON'
  else:
   Status = 'OFF'

  print("Status : {}".format(Status))

我尝试在Status='ON'下面使用break命令,但这不是一个好的解决方案。

试试这个,也许?您需要在开始时初始化preStatus='ON'

if sensor > 1.60:
   Status = 'ON'
else:
   Status = 'OFF'

if preStatus!=Status:
   print("Status : {}".format(Status))
   preStatus=Status

只需添加另一个变量,该变量在每次检查输入时都会更新和引用

if sensor > 1.60 and previous_status == 'OFF:
  Status = 'ON'
  previous_status = 'ON'
elif sensor <= 1.60 and previous_status == 'ON':
  Status = 'OFF'
  previous_status = 'OFF'
如果传感器>1.60且之前的_状态==”关闭:
状态='ON'
上一个_状态='ON'

elif传感器按照您的要求,以下是我的建议。它与其他人发布的内容非常相似,只是在这里我明确地展示了初始化和循环。唯一缺少的是更新传感器的代码

prev_Status = None

while True:
    if sensor > 1.60:
        Status = 'ON'
    else:
        Status = 'OFF'

    if Status != prev_Status:
        print("Status : {}".format(Status))
        prev_Status = Status

这段代码是在某种循环中执行的吗?如果您只对状态的更改感兴趣,则必须跟踪上一个值并将其作为逻辑基础。除非您显示包含打印的循环,否则我们将无法解释如何在循环外打印…将
prev\u status
初始化为
None
。然后,在更新
状态
后,将其与
上一个状态
进行比较。如果是一样的,什么也不做。如果不是,则打印
Status
,并执行
prev_Status=Status
@DisplayName有
,而True:
位于“代码换循环”的顶部。@TomKarzes我试图写下你的意思,但我认为我写起来有一些问题。你能用代码解释吗?你忘了缩进上一个作业了。如果
条件为false,则没有任何作用。我对问题的理解是,如果条件为false,则不会打印任何内容,在这种情况下,preStatus==StatusUm,是的,这就是我的观点。做一个无用的作业通常是不好的编码。如果他们已经相等,那么这个任务就没有用了。只有当它们不相等时,你才需要做作业。换句话说,正如我所说的,你忘了缩进上一个作业。这不是功能上的改变。这只是更好(更有效)的代码。我想你不会比较
状态
以前的状态
@CoşkunKozakbaş。我改变了答案,以显示两者之间的更好关系。