使用python3.5.3时获取KeyError 0:0

时间:2018-11-25 23:45:36

标签: python-3.x

我们是使用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

1 个答案:

答案 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的更多信息。