Python 2.7 返回具有“0”的图书的元组;关键词";共同的

Python 2.7 返回具有“0”的图书的元组;关键词";共同的,python-2.7,Python 2.7,我有一个保存为元组列表的数据库,每个元组有4个元素。第一个元素是书的编号,第二个元素是书的名称,第三个元素是书的作者,第四个元素是书的出版年份 我需要一个名为findBook(L,keyword)的函数,该函数以元组列表的形式接收书籍,keyword作为字符串,并返回其中包含关键字的所有书籍的元组。 这本书的元组应该是这样的: (BookNumber, BookName, Author, YearPublished) 如何编写一个搜索引擎来帮助我们找到这些特定的书籍 我试着从这个开始,但它不起

我有一个保存为元组列表的数据库,每个元组有4个元素。第一个元素是书的编号,第二个元素是书的名称,第三个元素是书的作者,第四个元素是书的出版年份

我需要一个名为
findBook(L,keyword)
的函数,该函数以元组列表的形式接收书籍,
keyword
作为字符串,并返回其中包含
关键字的所有书籍的
元组。
这本书的
元组应该是这样的:

(BookNumber, BookName, Author, YearPublished)
如何编写一个搜索引擎来帮助我们找到这些特定的书籍

我试着从这个开始,但它不起作用:

def findBook(L,keyword):

    for i in L:
        BookNumber=i[0]
        BookName=i[1]
        Author=i[2]
        YearPublished=i[3]
        i=(BookNumber,BookName,Author,YearPublished)

        if keyword == str(BookName) or keyword==BookNumber or keyword==str(Author) or keyword==str(YearPublished):
            return i

因此,如果我有一本哈利波特的书,我输入关键字:“harry”,它将返回所有元组。

您可以迭代可能包含您要查找的
关键字的条目,将它们分组到一个列表中,该列表将在流程结束时返回:

def findBook(L, keyword):

    books = list()
    for book in L:

        book = tuple(entry for entry in book)
        if [i for i in book if str(i).find(keyword) != -1]:
            books.append(book)

    return books

L = [(2,"harry potter and the prisoner of azkaban ","J.K Rowling","1998"),
        (3,"harry potter and the half blood prince","J.K Rowling","2007"),
        (6,"Harry potter and deathly hallows","J.K Rowling","2010"),
        (8,"The secret","someone","2009")]

print findBook(L, "harry")
输出:

[(2, 'harry potter and the prisoner of azkaban ', 'J.K Rowling', '1998'), (3, 'harry potter and the half blood prince', 'J.K Rowling', '2007')]
请注意,第三个条目未找到,因为
关键字是“harry”而不是“harry”,要进行不区分大小写的搜索,请使用:

def findBook(L, keyword):

    books = list()
    keyword = keyword.tolower()

    for book in L:

        book = tuple(entry for entry in book)
        if [i for i in book if str(i).tolower().find(keyword) != -1]:
            books.append(book)

    return books

它一直告诉我L没有定义。你需要把信息传递给参数;调用必须类似于:
findBook(library\u with\u books,“word”)
。你打算如何调用函数?我必须写一个至少有20本书的列表,并使用来自书名的单词。用你拥有的书的列表为你的问题添加一个编辑,并显示你试图如何调用函数
findBook()
;如果你不说你的问题是什么,我们就无法帮你解决它总是返回一个空列表。