Python TypeError: 'NoneType' object is not iterable but every variables defined
Python TypeError: 'NoneType' object is not iterable but every variables defined
我正在尝试构建一个连接到 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 并且是正确的格式。
有什么想法吗?
您对 datamood()
方法的调用需要一个值 returned。由于您的逻辑没有明确告诉您的方法当 user
存在于 user_list
方法 returns None
或 NoneType
对象中时该怎么做。当 return 未在 Python 方法中显式设置时,它将始终 return None
。因此,当您第一次调用该方法并且 user
不存在时,需要 return 值;但是,当您调用该方法并且 user
确实存在时,您的方法 returns None
.
我正在尝试构建一个连接到 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 并且是正确的格式。
有什么想法吗?
您对 datamood()
方法的调用需要一个值 returned。由于您的逻辑没有明确告诉您的方法当 user
存在于 user_list
方法 returns None
或 NoneType
对象中时该怎么做。当 return 未在 Python 方法中显式设置时,它将始终 return None
。因此,当您第一次调用该方法并且 user
不存在时,需要 return 值;但是,当您调用该方法并且 user
确实存在时,您的方法 returns None
.