【问题标题】:TypeError: unsupported types for : 'int', 'NoneType' in PythonTypeError:Python中不支持的类型:'int','NoneType'
【发布时间】:2017-06-18 16:23:03
【问题描述】:

我正在为客户端编写一个程序,该程序通过客户端记录的内置平均值无线电从服务器接收平均值字符串。我收到一个 TypeError 说:“不支持的类型:'int','NoneType'”。

这是我的代码:

from microbit import *
import radio

radio.on()

blink = Image("99999:"
              "99999:"
              "99999:"
              "99999:"
              "99999")


radio.send("power on")

while True:
   incoming = radio.receive()
   if incoming is not None:
      incoming = float(incoming)

   sleep(500 - running_time() % 500)
   acceleration = accelerometer.get_z()
   radio.send(str(acceleration))
   acceleration = float(acceleration)

   if acceleration > 2 * incoming or acceleration < .5 * incoming:
       display.show(blink)
       microbit.sleep(150)
       display.clear()
       microbit.sleep(150)

错误发生在这一行:

if acceleration > 2 * incoming or acceleration < .5 * incoming:

【问题讨论】:

  • 我认为您缺少缩进​​(最后一个if)...
  • incoming 持有None

标签: python micropython bbc-microbit


【解决方案1】:

试试这个:

from microbit import *
import radio

radio.on()

blink = Image("99999:"
              "99999:"
              "99999:"
              "99999:"
              "99999")


radio.send("power on")

while True:
   incoming = radio.receive()
   if incoming is not None:
      incoming = float(incoming)

      sleep(500 - running_time() % 500)
      acceleration = accelerometer.get_z()
      radio.send(str(acceleration))
      acceleration = float(acceleration)

      if acceleration > 2 * incoming or acceleration < .5 * incoming:
          display.show(blink)
          microbit.sleep(150)
          display.clear()
          microbit.sleep(150)

理由:您的代码(如已发布)执行第一个if 以检查incoming 是否为None。但是,您在之前的缩进级别有以下代码块,因此,当 incomingNone 时,这些代码块也会执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-16
    • 2016-09-07
    • 2018-04-16
    • 2017-12-27
    • 2014-03-31
    • 2021-05-23
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多