Python 索引器错误:列表索引超出范围,使用for循环中的索引 #检查输入列表中的每个元素是否至少与前面的元素一样大。 输入列表=[9,10,11,12,13] 标志=0 j=1 i=0 对于范围内的i(len(输入列表)): 如果inputList[i]inputList[j]: 标志=1 其他: 标志=1 打印(“意外错误!!”) 如果j
我试图从for循环中访问列表的索引,但它给了我索引错误 我试着手动打印索引,但效果不好Python 索引器错误:列表索引超出范围,使用for循环中的索引 #检查输入列表中的每个元素是否至少与前面的元素一样大。 输入列表=[9,10,11,12,13] 标志=0 j=1 i=0 对于范围内的i(len(输入列表)): 如果inputList[i]inputList[j]: 标志=1 其他: 标志=1 打印(“意外错误!!”) 如果j,python,Python,我试图从for循环中访问列表的索引,但它给了我索引错误 我试着手动打印索引,但效果不好 回溯(最近一次呼叫最后一次): 文件“prac3.py”,第13行,在 如果inputList[i]
回溯(最近一次呼叫最后一次):
文件“prac3.py”,第13行,在
如果inputList[i]
j
总是比i
大1,因此当i
是最后一个元素的索引时,j
超出范围——因此会出现错误。试试这个
#检查输入列表中的每个元素是否至少与前面的元素一样大。
输入列表=[9,10,11,12,13]
标志=0
j=1
i=0
对于范围内的i(len(输入列表)):
如果inputList[i]inputList[j]:
标志=1
其他:
标志=1
打印(“意外错误!!”)
如果j
为了避免错误,我只更改了一行。您知道更好的逻辑来实现自己的算法。j=j+1如果j
那么在@ekhumaro的答案上过了一段时间后,我找到了方法
#Check if each element in input list is at least as big as the one before it.
inputList = [9,10,11,12,13]
flag=0
j = 1
i = 0
for i in range(len(inputList)):
if inputList[i] < inputList[j] :
flag=0
elif inputList[i] > inputList[j] :
flag=1
else:
flag=1
print("Unexpected Error!!")
if j < len(inputList):
j=j+1
else:
j=j
if flag == 1 :
print("Condition Failed")
else:
print("Condition Passed")
当数字相等时,为什么会出现“意外错误”?此外,循环在
flag=0
时不会终止,因此如果下一对数字设置为flag=1
,则结果将是错误的。解决这个问题最简单的方法是使用一个成对的列表,比如:all(b>a代表a,b在zip中(x,x[1:])
(其中x
是输入列表)。你能给出一些伪代码吗?我刚刚给出了一个完整的、一行的解决方案。如果任何数字小于前一个,则返回False
。(注意:空的或一个元素的输入列表将始终计算True
)。您能解释一下这一行吗?您能告诉我代码中的任何修正吗
res = all(b > a for a, b in zip(x, x[1:]))
if res == true:
print("")