线性搜索 - 将整数与列表匹配
Linear Search - Matching integer with list
大家好,我是 python 的新手,这是我正在尝试做的事情,我有下面的列表。
x= [1,2,3,4,5,6,7,8,9]
这是我的 python 代码:
length = len(x)
c = input("Enter a no\n")
for i in range (length):
if x[i] == c:
print ("Found at position ", i)
else:
print("not found")
并且正在接收输出。
Enter a no
2
not found
not found
not found
not found
not found
not found
not found
not found
not found
现在,我知道的很少,我发现这个 multiple not found 正在发生,因为每次循环都不检查列表,如果它不可用,则由于缺少适当的 beak
语句 但是我无法弄清楚当它在 x[i] 中进行匹配时,输出应该是 Found at position 1
。我在某处读到需要使用 if c in x[i]
但它没有用。另一方面,我重新编写了代码。
def ls():
t = int(input("Enter your search no \n"))
for i in x:
if i!= t:
continue
print("Your value is present in ")
break
else:
print ("parrrrrrrrrrr")
ls()
一切正常。如果我能了解一下会有帮助:
- 对于第一个程序,为什么即使输入存在于列表中也找不到它的显示
- 在 x[i] 中输入 c 的部分发生了同样的问题,据我所知 (现在没有意义) 它也应该工作
- 如果是整数与列表的情况,那么我的第二个代码是如何工作的
-这是进行线性搜索的正确方法吗?
- 因为输入returns你一个
str
对象然后和int
对象比较没有隐式转换,所以表达式总是False
.
c in x
其中 x 是一个列表有效,但 x[i]
在您的情况下是一个整数
- 第二个代码有效,因为您将输入隐式转换为
int
我认为最优雅的方式是:
c = input("Enter a no\n")
items = [1,2,3]
print(items.index(int(c)) if int(c) in items else 'Not found')
如果输入不能转换为整数,当然不要忘记捕捉 ValueError
大家好,我是 python 的新手,这是我正在尝试做的事情,我有下面的列表。
x= [1,2,3,4,5,6,7,8,9]
这是我的 python 代码:
length = len(x)
c = input("Enter a no\n")
for i in range (length):
if x[i] == c:
print ("Found at position ", i)
else:
print("not found")
并且正在接收输出。
Enter a no
2
not found
not found
not found
not found
not found
not found
not found
not found
not found
现在,我知道的很少,我发现这个 multiple not found 正在发生,因为每次循环都不检查列表,如果它不可用,则由于缺少适当的 beak
语句 但是我无法弄清楚当它在 x[i] 中进行匹配时,输出应该是 Found at position 1
。我在某处读到需要使用 if c in x[i]
但它没有用。另一方面,我重新编写了代码。
def ls():
t = int(input("Enter your search no \n"))
for i in x:
if i!= t:
continue
print("Your value is present in ")
break
else:
print ("parrrrrrrrrrr")
ls()
一切正常。如果我能了解一下会有帮助:
- 对于第一个程序,为什么即使输入存在于列表中也找不到它的显示
- 在 x[i] 中输入 c 的部分发生了同样的问题,据我所知 (现在没有意义) 它也应该工作
- 如果是整数与列表的情况,那么我的第二个代码是如何工作的 -这是进行线性搜索的正确方法吗?
- 因为输入returns你一个
str
对象然后和int
对象比较没有隐式转换,所以表达式总是False
. c in x
其中 x 是一个列表有效,但x[i]
在您的情况下是一个整数- 第二个代码有效,因为您将输入隐式转换为
int
我认为最优雅的方式是:
c = input("Enter a no\n")
items = [1,2,3]
print(items.index(int(c)) if int(c) in items else 'Not found')
如果输入不能转换为整数,当然不要忘记捕捉 ValueError