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

List 顺序搜索:未检测到输入长度,list,python-3.x,position,user-input,linear-search,List,Python 3.x,Position,User Input,Linear Search,我正在编写一个程序,其中用户输入一个数字列表,然后询问他或她希望程序返回哪个数字位置。例3,5,1,9,12,6->在列表中查找出现9的位置 如果我对列表和搜索号码进行硬编码,我可以实现这一点,但我在输入方面遇到了问题。我的主要问题是Python没有检测到数字列表的长度,但我不确定如何解决这个问题。 以下是我的代码: def List(line): list = [] for e in line.split(','): list.append(int(e)) d

我正在编写一个程序,其中用户输入一个数字列表,然后询问他或她希望程序返回哪个数字位置。例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 Practice\linearsearch.py", line 24, in <module>
    main()
  File "G:\Final Exam Practice\linearsearch.py", line 19, in main
    a = Search(p, list)
  File "G:\Final Exam Practice\linearsearch.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保留的关键字之一。如果要将列表传递给搜索函数,请不要将其命名为“列表”

只需更改函数中“list”变量的名称即可解决问题。此外,这里还有另一种定义搜索Python函数名的方法,函数名通常为小写:

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