Python 索引器错误:列表索引超出范围,使用for循环中的索引 #检查输入列表中的每个元素是否至少与前面的元素一样大。 输入列表=[9,10,11,12,13] 标志=0 j=1 i=0 对于范围内的i(len(输入列表)): 如果inputList[i]inputList[j]: 标志=1 其他: 标志=1 打印(“意外错误!!”) 如果j

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]

我试图从for循环中访问列表的索引,但它给了我索引错误

我试着手动打印索引,但效果不好

回溯(最近一次呼叫最后一次):
文件“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("")