2017-02-01 4 views
1

Ich schreibe ein Programm für einen Client, der eine Durchschnittsschnur von einem Server über das eingebaute Radio von Durchschnittswerten erhält, die der Client aufzeichnet. Ich erhalte einen TypeError, der sagt: "nicht unterstützte Typen für: 'int', 'NoneType'".TypeError: nicht unterstützte Typen für: 'int', 'NoneType' in Python

Hier ist mein Code:

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) 

Der Fehler in dieser Zeile passiert:

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

Ich denke, Sie fehlen eine Einrückung (für die letzte 'if') ... –

+0

' eingehende' hält 'None' Wert –

Antwort

2

Versuchen Sie folgendes:

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) 

Begründung: Ihr Code (wie geschrieben) Führt die erste if aus, um zu überprüfen, ob incoming ist None. Dann haben Sie jedoch die folgenden Codebausteine ​​auf einer vorherigen Einzugsebene und diese Blöcke werden daher auch ausgeführt, wenn incomingNone ist.

Verwandte Themen