顺序搜索:未检测到输入长度 Python
Posted
技术标签:
【中文标题】顺序搜索:未检测到输入长度 Python【英文标题】:Sequential Search: Input Length Isn't Detected Python 【发布时间】:2014-05-08 02:57:37 【问题描述】:我正在编写一个程序,用户输入一个数字列表,然后询问他或她希望程序返回哪个数字位置。 (例如 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()
【问题讨论】:
【参考方案1】:首先,this answer 有一些你可以使用的东西。 list.index
是类方法,返回列表项的索引:
>>> mylist = [3,5,1,9,12,6]
>>> mylist.index(9)
3
接下来,TypeError
被提出,因为list
是 Python 的保留关键字之一。如果您想将列表传递给您的 Search
函数,请不要将其命名为“列表”。
只需更改函数中“列表”变量的名称即可解决您的问题。另外,这里还有另一种定义search
的方法(Python函数名通常是小写的):
def search(num, mylist):
try:
return mylist.index(num)
except:
return -1
【讨论】:
以上是关于顺序搜索:未检测到输入长度 Python的主要内容,如果未能解决你的问题,请参考以下文章
如果ElasticSearch中没有搜索参数,搜索结果的默认顺序是什么