def test_search(li, item):
i = 0
while i < len(li):
if item == li[i]:
return i
else:
i = i + 1
return -1
items = input('what item are you looking for? ')
lis = ['he', 'she', 6, 2]
print(test_search(lis, items))
答案 0 :(得分:2)
input()
返回一个字符串。因此,item
将等于"6"
而不是整数6
。这意味着item
永远不会找到lis
,因为"6" != 6
。您需要知道何时将用户输入转换为整数,以及何时将其保留为字符串。
您可以采取的一种方法是询问用户他们是在搜索整数还是字符串,并相应地转换输入:
item = input('')
item_type = input('')
# The default item type will be string. If the user wants to change
# this they can enter "int" for integers.
if item_type == 'int':
item = int(item)
lis = ['he', 'she', 6, 2]
print(test_search(lis, item))
对于输入6
和int
,上面的代码输出:
6
作为@abccd mentioned in the comments,如果您的元素类型无关紧要,您只需将列表中的所有元素转换为一种类型 - 字符串:
...
while i < len(li):
if item == str(li[i]):
return i
...
在问题的无关旁注上,使用search
而不是for
可以更清晰地实现while
功能:
def search(item, lst):
"""
search for `item` in `lst`. If `item` is found, return
`item`, otherwise return `-1`.
"""
for element in lst:
if item == element:
return item
return -1