用我的开关比较Python程序找不到逻辑错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用我的开关比较Python程序找不到逻辑错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2147字,纯文字阅读大概需要4分钟。
内容图文
![用我的开关比较Python程序找不到逻辑错误](/upload/InfoBanner/zyjiaocheng/804/5c7a33519be54b01825cca5361a126f0.jpg)
我正在尝试编写一个简单的Python程序,它将挂钩我正在研究的一个小型微控制器报警项目.微控制器连接到八个开关.它根据串口上的开关状态输出二进制值.
我正在尝试编写python程序解码器,并使用硬编码值来检查我的逻辑.这是我写的:
switches='11011101'
currentstate = {}
prevstate = {}
def initswitches():
for x in range (0,8):
name = "switch" + str(x)
currentstate[name] = switches[x]
prevstate[name] = switches[x]
def setswitches():
for x in range (0,8):
name = "switch" + str(x)
currentstate[name] = switches[x]
def checkswitches():
for switch in range (0,8):
name = "switch" + str(switch)
if ( currentstate[name] != prevstate[name]):
print name + " value changed to " + str(switch)
initswitches()
for y in range (0,2):
setswitches()
print "Loop" + str(y)
print "Switches:"
print switches
print "Current state:"
print currentstate
print "Previous state:"
print prevstate
checkswitches()
prevstate = currentstate
switches='01001001'
print
print
这是输出:
Loop0
Switches:
11011101
Current state:
{'switch3': '1', 'switch2': '0', 'switch1': '1', 'switch0': '1', 'switch7': '1', 'switch6': '0', 'switch5': '1', 'switch4': '1'}
Previous state:
{'switch3': '1', 'switch2': '0', 'switch1': '1', 'switch0': '1', 'switch7': '1', 'switch6': '0', 'switch5': '1', 'switch4': '1'}
Loop1
Switches:
01001001
Current state:
{'switch3': '0', 'switch2': '0', 'switch1': '1', 'switch0': '0', 'switch7': '1', 'switch6': '0', 'switch5': '0', 'switch4': '1'}
Previous state:
{'switch3': '0', 'switch2': '0', 'switch1': '1', 'switch0': '0', 'switch7': '1', 'switch6': '0', 'switch5': '0', 'switch4': '1'}
如您所见,我能够将每个开关的二进制值正确设置为当前状态,但由于某种原因,先前的状态始终与当前状态匹配. Loop0显示预期的行为,但Loop1应具有先前的状态匹配Loop0的输出.在调用checkwitches函数之前,我无法找到设置先前状态以匹配currentstate的位置.谁能告诉我哪里出错了?
解决方法:
prevstate = currentstate
重定向变量prevstate以等于当前状态字典. prevstate现在与currentstate完全相同.
这样做会使对当前状态的所有更改也会产生影响.
要修复,请将当前状态的副本设为prevstate:
prevstate = currentstate.copy()
或者,您可以使用currentstate中的键值对更新prevstate:
prevstate.update(currentstate)
第二个选项可能更可取,因为您将创建(并随后丢弃)更少的对象.
内容总结
以上是互联网集市为您收集整理的用我的开关比较Python程序找不到逻辑错误全部内容,希望文章能够帮你解决用我的开关比较Python程序找不到逻辑错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。