Python while循环中列表的非类型错误?
我正在写一个猜谜游戏程序,有定义的函数。它要求用户想出一个介于1和1000之间的数字,然后程序尝试在不到15次的尝试中猜出这个数字。对于我的函数,要在每个函数中返回多个值,我将它们作为列表返回。但是有一个非类型错误-下面是错误消息Python while循环中列表的非类型错误?,python,Python,我正在写一个猜谜游戏程序,有定义的函数。它要求用户想出一个介于1和1000之间的数字,然后程序尝试在不到15次的尝试中猜出这个数字。对于我的函数,要在每个函数中返回多个值,我将它们作为列表返回。但是有一个非类型错误-下面是错误消息 Traceback (most recent call last): File "python", line 187, in <module> File "python", line 167, in main TypeError: 'NoneTyp
Traceback (most recent call last):
File "python", line 187, in <module>
File "python", line 167, in main
TypeError: 'NoneType' object is not subscriptable
函数定义如下:
def guessReturn(tries, upper, lower):
while tries < 15:
errorInput = "yes"
while errorInput == "yes":
feedbackGuessVal = guesser(upper, lower)
feedback = feedbackGuessVal[0]
guessVal = feedbackGuessVal[1]
LUITri = processData(feedback, tries, upper, lower, guessVal)
lower = LUITri[0]
upper = LUITri[1]
errorInput = LUITri[2]
tries = LUITri[3]
errorBound = boundChecker(upper, lower)
errorTrick = trickChecker(upper, lower)
if errorBound == "yes":
return
elif errorTrick == "yes":
return
elif feedback == "0":
tries += 1
return
tries += 1
return [feedback, errorInput, errorBound, errorTrick, tries]
def猜测返回(尝试、上、下):
15岁以下的儿童:
errorInput=“是”
当errorInput==“是”时:
反馈猜测值=猜测器(上、下)
反馈=反馈猜测值[0]
猜测值=反馈猜测值[1]
LUITri=processData(反馈、尝试、上限、下限、猜测值)
下限=路易特里[0]
上限=路易特里[1]
errorInput=LUITri[2]
tries=LUITri[3]
errorBound=boundChecker(上、下)
errorTrick=trickChecker(上、下)
如果errorBound==“是”:
返回
elif errorTrick==“是”:
返回
elif反馈==“0”:
尝试次数+=1
返回
尝试次数+=1
返回[反馈,错误输入,错误绑定,错误技巧,尝试]
不带值的return
语句将返回None
,然后您尝试将其视为列表
不带值的
return
语句将返回None
,然后您尝试将其视为一个列表该错误告诉您正在尝试对类型为NoneType
的对象(即None
单例对象)使用订阅语法([…]
)
您的guessReturn()
函数在多个位置返回None
:
if errorBound == "yes":
return
elif errorTrick == "yes":
return
elif feedback == "0":
tries += 1
return
return
没有显式返回值时返回None
您正在尝试使用以下内容订阅该结果:
feedback = FBTrcTri[0]
您必须明确地测试
fbtrcri
是否为None
(或者使用异常处理来捕获类型错误
),或者始终从函数的所有出口点返回列表或元组中至少4个值。错误告诉您正在尝试使用订阅语法([…])
)在类型为NoneType
(即None
singleton对象)的对象上
您的guessReturn()
函数在多个位置返回None
:
if errorBound == "yes":
return
elif errorTrick == "yes":
return
elif feedback == "0":
tries += 1
return
return
没有显式返回值时返回None
您正在尝试使用以下内容订阅该结果:
feedback = FBTrcTri[0]
您必须明确测试
fbtrcri
是否为None
(或者使用异常处理捕获类型错误
),或者始终在列表或元组中返回至少4个值,从函数的所有退出点。在guessReturn
函数中有大量实例,您不返回任何内容/None
,即return
函数中有大量实例,您不返回任何内容/None
,即return