顺序搜索:未检测到输入长度 Python



我正在编写一个程序,其中用户输入一个数字列表,然后询问他或她希望程序返回哪个数字的位置。(例3、5、1、9、12、6——>查找列表中出现9的位置)如果我硬编码列表和搜索号,我可以让这个工作,但我在输入方面遇到了麻烦。我的主要问题是Python不检测数字列表的长度,但我不确定如何解决这个问题。下面是我的代码:

def List(line):
    list = []
    for e in line.split(','):
        list.append(int(e))
def Search(num, list):
    for i in range(len(list)):
        if list[i] == num:
            return i
    return -1
def main():
    line = input("Enter list of numbers separated by commas: ")
    p = input("Number searching for")
    print(List(line))
    a = Search(p, list)
    print(a)
main()

错误如下:

Traceback (most recent call last):
  File "G:Final Exam Practicelinearsearch.py", line 24, in <module>
    main()
  File "G:Final Exam Practicelinearsearch.py", line 19, in main
    a = Search(p, list)
  File "G:Final Exam Practicelinearsearch.py", line 7, in Search
    for i in range(len(list)):
TypeError: object of type 'type' has no len()

首先,这个答案有一些你可以使用的东西。list.index是一个返回列表项索引的类方法:

>>> mylist = [3,5,1,9,12,6]
>>> mylist.index(9)
3

接下来,TypeError被抛出,因为list是Python的保留关键字之一。如果你想传递一个列表给你的Search函数,不要将它命名为"list"。

只需更改函数中'list'变量的名称就可以解决您的问题。此外,这里有另一种定义search的方法(Python函数名通常是小写的):

def search(num, mylist):
    try:
        return mylist.index(num)
    except:
        return -1

相关内容

  • 没有找到相关文章

最新更新