在列表python中查找下一个实体

时间:2019-02-13 18:22:11

标签: python python-3.x list

我对python来说还比较陌生,我已经在网上搜索了一个答案,但找不到答案。

下面的程序要求用户输入多个输入,然后要求他们输入一个长度等于输入数量的整数列表。 然后,程序将遍历列表,如果该数字小于ToyValue,并且小于列表中的下一个项目,则变量ToyValue会加1。

NoOfToys=0
ToyValue=0
NumOfTimes=int(input("Please enter No of inputs"))
NumberList=input("Please enter Input")
NumberList=NumberList.split(" ")
print(NumberList)
for i in NumberList:
    if int(i)>ToyValue:
        ToyValue=int(i)
    elif int(i)<ToyValue:
        if int(i)<int(i[i+1]):
            NoOfToys=NoOfVallys+1
            ToyValue=int(i[i+1])
    else:
        pass
print(NoOfVallys)

这是一些数据和预期输出的示例。

#Inputs
8
4 6 8 2 8 4 7 2
#Output
2

我认为我在i[i+1]行上遇到了麻烦,因为我无法在列表中获得下一项

我已经看过命令next(),但在这种情况下我认为它没有帮助。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您在列表中的项目与将这些项目的索引值之间混淆了。您需要做的是在一个范围内进行迭代,以便您可靠地处理索引值:

NoOfToys = 0
ToyValue = 0
NumOfTimes = int(input("Please enter No of inputs"))
NumberList = input("Please enter Input")
NumberList = NumberList.split(" ")
print(NumberList)
for i in range(0, len(NumberList)):
    value = int(NumberList[i])
    if value > ToyValue:
        ToyValue = value
    elif value < ToyValue:
        if (i + 1) < len(NumberList) and value < int(NumberList[i + 1]):
            NoOfToys = NoOfVallys + 1
            ToyValue =  int(NumberList[i + 1])
    else:
        pass
print(NoOfVallys)

当没有“下一项”时,您必须小心在列表的末尾。请注意对第二个“如果”允许的额外检查。

其他一些观察结果:

  • 您没有使用NumOfTimes输入
  • 关于NoOfVallys和NoOfToys的逻辑是不正确的,因为NoOfVallys从未设置为任何值,并且从未使用过NoOfToys
  • 对于正确的Python编码样式,您应该使用以小写字母开头的标识符
  • 代码的“ else:通过”部分是不必要的