我们是使用python3进行编码的新手,并且已经成功使用其他脚本,但是尝试使用python3中的列表来设置此风向标对我们不起作用。如果有人能指出我和我10岁的正确方向,对我们的帮助将不胜感激。读取第36行(打印指令)后,我们得到一个KeyError 0:0:这是我们的代码:
from gpiozero import MCP3008
import time
adc = MCP3008(channel=1)
import math
wind = 0
values = []
volts = {
0.4: 0.0,
1.4: 22.5,
1.2: 45.0,
2.8: 67.5,
2.7: 90.0,
2.9: 112.5,
2.2: 135.0,
2.5: 157.5,
1.8: 180.0,
2.0: 202.5,
0.7: 225.0,
0.8: 247.5,
2.8: 67.5,
2.7: 90.0,
2.9: 112.5,
2.2: 135.0,
2.5: 157.5,
1.8: 180.0,
2.0: 202.5,
0.7: 225.0,
0.8: 247.5,
0.1: 270.0,
0.3: 292.5,
0.2: 315.5,
0.6: 337.5
}
while True:
wind = round (adc.value * 3.3,1)
if not wind in volts:
print('Unknown value ' + str(wind) + ' ' + str(volts[wind]))
else:
print('found ' + str(wind) + ' ' + str(volts[wind]))
我们得到的错误:
File "direction-test.py", line 36, in <module>
print('Unknown value ' + str(wind) + ' ' + str(volts[wind]))
KeyError: 0.0
答案 0 :(得分:1)
volts[wind]
获取wind
词典中volts
键的值。例如,如果wind = 0.4
,则volts[wind]
从0.0
字典中获得值volts
。
if not wind in volts:
print('Unknown value ' + str(wind) + ' ' + str(volts[wind]))
在上面的代码中,您正在查看if not wind in volts:
,当发现密钥不在字典中时,您尝试在第38行中打印不存在的密钥的值。
简而言之,从第38行中删除str(volts[wind])
以摆脱KeyError。您可以找到有关Python字典here的更多信息。