Цель моей программы - отобразить меню, которое сможет предоставить вам возможность добавить новую «Книгу» с ее сведениями, такими как автор, цена и копии, в текстовый файл. Вторая часть программы должна запросить у пользователя ввод имени автора, после чего программа должна найти имя этого автора в текстовом файле и отобразить книги, цены и копии, относящиеся к этому автору. Моя проблема в том, что я не уверен, как именно выполнить вторую часть. «Линия» разделена на 4 части: «Автор», «Книга», «Цена» и «Копии». Автор содержит 16 символов, книга содержит 20 символов, цена содержит 5, а копии - 2. Допустим, автор - Дж. К. Роулинг, то есть 12 символов, у меня есть функция, которая добавляет "" (пробелы), чтобы удовлетворить условию того, что это 16 То же самое касается всех подразделений. В конце скажем, что это книга Дж. К. Роулинг о Гарри Поттере 2 12.9912. Автор: "Джоан Роулинг" Книга: "Книга Гарри Поттера 2" Цена: "12.99" Копии: "12" Это технически объяснение первой части. Вторая часть должна искать «Дж. К. Роулинг», а затем получать результаты:
Автор: «Дж. К. Роулинг» Книга: «Книга Гарри Поттера 2» Цена: «12.99» Копии: «12»
Если есть гораздо более эффективный способ, чем этот, то он будет очень признателен, но сейчас основной проблемой является часть 2.
ps Это должно быть сделано через текстовый файл
Полная программа (часть 1 работает):
def AddSpaces(auth,numb):
print("Runs")
while len(auth) < numb:
auth = auth + " "
return (auth)
menu = 1
while menu <= 2:
menu = int(input("1. Add a new book\n2. Search for a new book by a given author\n3. End"))
if menu ==1:
BOOKS = open("BOOKS.txt","a")
Author = str(input("Author: "))
if len(Author) < 16:
Author = AddSpaces(Author,16)
while len(Author) > 16:
Author = str(input("Author: "))
Author = AddSpaces(Author,16)
print(Author)
Book = str(input("Book: "))
if len(Book) < 20:
Book = AddSpaces(Book,20)
while len(Book) > 16:
Book = str(input("Book: "))
Book = AddSpaces(Book,20)
print(Book)
Price = str(input("Price: "))
while len(Price)>5:
Price = str(input("Price: "))
Copies = str(input("Copies: "))
while len(Copies)>2:
Copies = str(input("Copies: "))
line = Author + Book + Price + Copies +"\n"
print(line)
BOOKS.write(line)
BOOKS.close()
elif menu == 2:
BOOKS = open("BOOKS.txt","r")
while True:
AuthorSearch = str(input("Author name for search: "))
if len(AuthorSearch) < 16:
AuthorSearch = AddSpaces(AuthorSearch,16)
while len(AuthorSearch) > 16:
AuthorSearch = str(input("Author name for search: "))
AuthorSearch = AddSpaces(AuthorSearch,16)
print(AuthorSearch)
n = BOOKS.read()
if n == "":
print("End of file, no books found")
break
if AuthorSearch == line[:16]:
print ("Author found.")
print ("Author name: ") + (line[:16])
print ("Book name: ") + (line[17:36])
print ("Price: ") + (line[37:41])
print ("Copies: ") + (line[42:43])