以下代码在类型为的第6行返回一个错误:TypeError:“NoneType”对象不可下标
怎么了?你知道吗
def insertAtList(name, score, H):
E = [score, name]
i = len(H) - 1
if H[i] != None:
print("fail")
while H[i-1][0] < E[0] or H[i-1] == None:
H[i] = H[i-1]
i -= 1
H[i] = E
for c in range (0,len(H) - 1):
print(H[c])
def testq4():
H = [[940, "Mike"], [880, "Rob"], [830, "Jill"], [790, "Paul"],
[750, "Anna"], [660, "Rose"], [650, "Jack"], None, None, None]
insertAtList("Mark",675,H)
testq4()
错误信息非常清楚。您正在访问None值,试图将其视为列表。原因是,在测试它是否为“无”之前,您首先尝试以这种方式访问它。所以需要在while循环中恢复条件。最重要的是,没有检查没有使用!=或==运算符,但“is”和“is not”运算符,因为都不是单例。最后但并非最不重要的一点是,您应该考虑将代码替换为利用列表排序的内置功能的代码:
您需要交换while循环条件中操作数的顺序。
or
从左到右检查条件,并在找到一个True
值时停止计算。这就是当你发现H[i-1]
是None
时你想做的。当前,如果H[i-1]
是None
,您仍在尝试计算H[i-1][0]
,但它不存在。你知道吗试着这样做:
相关问题 更多 >
编程相关推荐