是否可以在包含字符串和整数的列表中进行搜索

时间:2017-07-17 03:18:49

标签: python search

例如,如果输入为6,它将搜索字符串six我如何将其更改为int

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))

1 个答案:

答案 0 :(得分:2)

Python中的

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))

对于输入6int,上面的代码输出:

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