#python #arrays #list
#питон #массивы #Список
Вопрос:
Вот мой текущий код:
search=input('Enter a book title') def read_book(): booksdata=[] f=open('books2.txt', 'r') for record in f: cleanrecord=record.strip() books=cleanrecord.split(',') booksdata.append(books) f.close() return booksdata read_book()
Он открывает текстовый файл, в котором хранятся такие данные:
1, The Hunger Games, Adventure, Suzanne Collins, 1/08/2006, coai 2, Harry Potter and the Order of the Phoenix, Fantasy, J.K Rowling, 25/09/2021, ajyp
Я пытаюсь запрограммировать его так, чтобы, если пользователь введет «Голод», весь список(ы), содержащий голод, будет распечатан:
['1', ' The Hunger Games', ' Adventure', ' Suzanne Collins', ' 1/08/2006', ' coai']
Комментарии:
1. Вам понадобится условное выражение (например
if
), чтобы проверить, есть ли слово,books
и добавить его только в том случае, если это правда. И вам понадобится инструкция по печати или какой-то цикл печати всех книг, которые будут возвращены в конце.
Ответ №1:
Вам нужно проверить, есть ли ваш ввод в каждой строке
search=input('Enter a book title') def read_book(): booksdata=[] f=open('books2.txt', 'r') for record in f: if search in record: # check cleanrecord=record.strip() books=cleanrecord.split(',') booksdata.append(books) f.close() return booksdata result = read_book() print (result)
выход:
[['1', ' The Hunger Games', ' Adventure', ' Suzanne Collins', ' 1/08/2006', ' coai']]
Ответ №2:
for d in read_book(): if any(['hunger' in w.lower() for w in d]): print(d)
Функция any()
принимает список логических значений в качестве аргумента и возвращает значение True, если какое-либо из значений является истинным. В списке, который мы ему даем, для каждого элемента в d хранится информация о том, присутствует ли строка «голод» в этом элементе (является подстрокой).