【问题标题】:Python using a loop to search for N number and return indexPython使用循环搜索N个数并返回索引
【发布时间】:2018-05-03 00:50:55
【问题描述】:

我总共编程了三周。我现在被这个问题困住了:

我们将向您传递 2 个输入:

数字列表

要查找的数字 N

您的工作是遍历列表并找到第二个输入中指定的数字。输出找到数字的列表元素索引。

如果在列表中没有找到 N,则输出 -1。

这是我目前所拥有的:

提供了import和N

import sys
N= int(sys.argv[2])

这也提供了

numbers= []
for i in sys.argv[1].split(","):
    if(i.isdigit()):
        numbers.append(int(i))

我的代码

for i in numbers: 
    if N in numbers: 
        print(i)
    elif N not in numbers: 
        print(-1)

这会为随机数输入输出以下内容:

程序输入失败:1,3,11,42,12 2 预期输出:-1 你的程序输出:-1 -1 -1 -1 -1

这不起作用,并且对于不在列表编号中的每个编号 N 返回 -1。我曾尝试在打印之前和之后使用 break 语句,但这完全阻止了它的打印。有什么建议?

【问题讨论】:

  • 当你在列表中循环时,你不想检查数字是否在列表中(你不需要循环);您想将数字与列表的当前项目进行比较并检查它们是否匹配。您的解决方案中还缺少另一件事:循环时告诉您当前位置的计数器,因此您可以在匹配时获取索引。
  • 看看奇妙的enumerate()函数,通过元素+索引对迭代列表。

标签: python list loops indexing


【解决方案1】:
import sys
N= int(sys.argv[2])


print "\n"

numbers= []
for i in sys.argv[1].split(","):
    if(i.isdigit()):
        numbers.append(int(i))
        print i 


i = 0


for num in numbers:

    if num == N:
        print "number found at index %d " % (i)

    i+=1

使用python program_name.py [,x,y,z,l,m,n,] N 运行,其中 x,y,z,l,m,n 是列表中的数字,N 是您搜索的数字(注意 [,,]

【讨论】:

    【解决方案2】:

    感谢您的 cmets 和回答。在搞砸了一点之后,这就是最终提供正确输出的原因:

    我的代码:

    if N in numbers: 
        print (numbers.index(N))
    if N not in numbers: 
        print(-1) 
    

    输出:

    程序输出

    输入:1,3,11,42,12 42 你的输出:3 挑战反馈

    干得好!

    【讨论】:

    • 哦,我以为你不被允许使用index 并且真的必须循环。那么这是一个很好的解决方案。您可以使用elif 而不是第二个if,或者如果您不想明确表达,则可以使用else,或者甚至只使用一行:print(numbers.index(N) if N in numbers else -1)。另一种方法是使用try/except 块而不是两个ifs。
    【解决方案3】:
    if N in numbers :
      for num in range(len(numbers)) :
        if numbers[num] == N :
          print(num)
    else :
      print(-1)
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2019-08-20
    • 2019-11-15
    • 2019-04-10
    相关资源
    最近更新 更多