Python TypeError: объект 'NoneType' не повторяется, но все переменные определены - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь создать бота, который подключается к Slack, и продолжаю получать TypeError:

Traceback (most recent call last):
  File "happybotV4.2.py", line 217, in <module>
    av_mood, user_count, total_mood = datamood(user_answer, user_id, user_count, total_mood, av_mood)
TypeError: 'NoneType' object is not iterable

Вот код:

if slackinput_list and len(slackinput_list) > 0:
  user_answer, user_id, channel, event_type = parse_slack_useranswer(slackinput_list)
  #print(user_answer,user_id)#test
  if user_answer and user_id and user_id != 'U7GRT34H3' and event_type=="message":
    if user_answer=="1" or user_answer=="5":
      print(user_answer, user_id, user_count, total_mood, av_mood) #test
      #if user_id not in user_list:
      av_mood, user_count, total_mood = datamood(user_answer, user_id, user_count, total_mood, av_mood)

И код Datamood:

def datamood(mood, user, count, total_mood, average_mood):
  print(user_list)
  if user not in user_list:
    count = count+1
    mood_user.append(mood)
    user_list.append(user)
    print(user_list, user)
    if len(mood_user)>0:
      for i in mood_user :
        if i=="1":
          n=1
        elif i=="5":
          n=5

        total_mood = total_mood + n
        print(total_mood)#test
      average_mood = total_mood/count
      print (average_mood, count) #test
      return average_mood, count, total_mood
    else:
      return average_mood, count, total_mood

На самом деле datamood работает один раз, но когда я пытаюсь вызвать его второй раз, я получаю сообщение об ошибке.Я проверил, что все переменные (то есть user_answer, user_id, user_count, total_mood, av_mood) не равны None и имеют правильный формат.

Есть идеи?

1 Ответ

0 голосов
/ 06 октября 2018

Ваш вызов метода datamood() ожидает возврата значения.Так как ваша логика явно не говорит вашему методу, что делать, когда в user_list существует user, метод возвращает None или NoneType объект.Если в методе Python возвращение явно не установлено, оно всегда возвращает None.Следовательно, когда вы впервые вызываете метод, а user не существует, ожидается возвращаемое значение;однако, когда вы вызываете метод и user существует, ваш метод возвращает None.

...