AttributeError: объект ‘NoneType’ не имеет атрибута ‘split’ в python, когда я запускаю свой код

#python #radio #grok

#python #Радио #грок

Вопрос:

 from microbit import *
import radio

radio.on()  
radio.config(channel=8)
routing_table = { 'Alice': 8, 'Bob': 10, 'Charlie': 15 }
spy = 60

def forward_message(msg):
    source, destination, payload = msg.split(':')
    radio.config(channel=10)
    radio.send(msg)

def forward_to_spy(msg):
    source, destination, payload = msg.split(':')
    radio.config(channel=60)
    radio.send(msg)

while True:
    msg = radio.receive()
    if msg:
        msg = radio.receive()
        forward_message(msg)
        forward_to_spy(msg)
        ack = radio.receive()
        while ack is None:
            ack = radio.receive()
        forward_message(ack)
 

Всякий раз, когда я отправляю этот код, он выдает эту ошибку, не мог бы кто-нибудь мне помочь. Я пытаюсь получать сообщения, а затем отправлять их тому, кому они нужны, но также отправляю сообщение шпиону для прохождения курса в grok. Я застрял на этом целую вечность, поэтому, пожалуйста, кто-нибудь, пожалуйста, помогите.

Ответ №1:

Вы проверяете сообщение, но затем получаете другое сообщение в следующей строке и не проверяете, так ли это None .

   msg = radio.receive()
  if msg:
    msg = radio.receive()
    forward_message(msg)
 

Таким образом, вы, вероятно, переходите None к forward_message и пытаетесь использовать split on None . None не имеет split метода, который вызывает эту ошибку.

Удалите второй msg = radio.receive() , чтобы вы передавали сообщение только после проверки if msg .

   msg = radio.receive()
  if msg:
    forward_message(msg)