Fitur Pencarian
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 58 dari 64.
Tantangan
SedangDalam tantangan ini, kamu akan menerapkan sistem pengelolaan library dengan fungsi pencarian buku.
Kamu akan bekerja dengan tiga file yang dapat diedit:
book.py- Berisi definisi class Bookuser.py- Berisi definisi class Userlibrary.py- Berisi class Library tempat kamu akan menerapkan fungsi pencarian
Ikuti komentar TODO di setiap file untuk menerapkan fungsi yang diperlukan. Tugas utamamu adalah menambahkan method search_by_title ke class Library yang melakukan pencarian judul buku tanpa membedakan huruf besar dan kecil.
Coba sendiri
from book import Book
from user import User
from library import Library
import time
# Penangan kasus uji yang menyeluruh
test_case = input()
if test_case == "search_match":
library = Library("Community Library")
# Tambahkan beberapa buku
library.add_book(Book("The Great Gatsby", "F. Scott Fitzgerald", "123456"))
library.add_book(Book("To Kill a Mockingbird", "Harper Lee", "789012"))
library.add_book(Book("Great Expectations", "Charles Dickens", "345678"))
# Cari buku
search_term = "great"
found_books = library.search_by_title(search_term)
print(f"Found {len(found_books)} books matching '{search_term}':")
for book in found_books:
print(f"- {book.title} by {book.author}")
elif test_case == "search_no_match":
library = Library("Community Library")
# Tambahkan beberapa buku
library.add_book(Book("The Great Gatsby", "F. Scott Fitzgerald", "123456"))
library.add_book(Book("To Kill a Mockingbird", "Harper Lee", "789012"))
# Cari buku
search_term = "nonexistent"
found_books = library.search_by_title(search_term)
print(f"Found {len(found_books)} books matching '{search_term}'")
elif test_case == "case_insensitive":
library = Library("Community Library")
# Tambahkan beberapa buku
library.add_book(Book("The Great Gatsby", "F. Scott Fitzgerald", "123456"))
library.add_book(Book("To Kill a Mockingbird", "Harper Lee", "789012"))
# Cari dengan variasi huruf besar dan kecil
search_terms = ["GREAT", "great", "Great", "gReAt"]
for term in search_terms:
found_books = library.search_by_title(term)
print(f"Search for '{term}': {len(found_books)} book(s) found")
elif test_case == "empty_search":
library = Library("Community Library")
# Tambahkan beberapa buku
library.add_book(Book("The Great Gatsby", "F. Scott Fitzgerald", "123456"))
library.add_book(Book("To Kill a Mockingbird", "Harper Lee", "789012"))
library.add_book(Book("Great Expectations", "Charles Dickens", "345678"))
# Cari dengan string kosong
search_term = ""
found_books = library.search_by_title(search_term)
print(f"Empty search returned {len(found_books)} books (should be all books)")
print(f"Library has {len(library.books)} total books")
elif test_case == "empty_library":
library = Library("Empty Library")
# Cari di library kosong
search_term = "anything"
found_books = library.search_by_title(search_term)
print(f"Search in empty library returned {len(found_books)} books")
elif test_case == "special_characters":
library = Library("Special Characters Library")
# Tambahkan buku dengan karakter khusus
library.add_book(Book("Harry Potter & the Sorcerer's Stone", "J.K. Rowling", "111111"))
library.add_book(Book("The C++ Programming Language", "Bjarne Stroustrup", "222222"))
library.add_book(Book("The !@#$%^& Book", "Special Author", "333333"))
# Cari karakter khusus
special_terms = ["&", "++", "!@#"]
for term in special_terms:
found_books = library.search_by_title(term)
print(f"Search for '{term}': {len(found_books)} book(s) found")
for book in found_books:
print(f"- {book.title}")
elif test_case == "performance_test":
library = Library("Large Library")
# Tambahkan banyak buku (100 buku)
for i in range(1, 101):
if i % 10 == 0: # Setiap buku ke-10 memiliki "performance" dalam judulnya
library.add_book(Book(f"Performance Book #{i}", f"Author {i}", str(i)))
else:
library.add_book(Book(f"Book #{i}", f"Author {i}", str(i)))
# Ukur waktu pencarian
start_time = time.time()
search_term = "performance"
found_books = library.search_by_title(search_term)
end_time = time.time()
print(f"Found {len(found_books)} books with '{search_term}' in the title")
print(f"Search took {end_time - start_time:.6f} seconds")
print(f"First matching book: {found_books[0].title if found_books else 'None'}")Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass vs objectParameter selfmethodAtributMethod Konstruktor (__init__)Rangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan DasarFungsi super()Penimpaan MethodPewarisan BergandaUrutan Resolusi MethodRingkasan: Hierarki Karyawan5Polimorfisme
Meninjau Ulang Method OverridingDuck Typingclass dan method AbstrakDesain InterfaceRingkasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanMixinsMetode Statis dan Metode ClassDecorator ClassPengelola Konteks11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Property class
Variabel instance vs variabel classDekorator propertyAtribut privatRangkuman: Pengelola Rekening Bank6Enkapsulasi
Anggota Public, Protected, PrivateModifier AksesPenyembunyian InformasiDecorator Property Tingkat LanjutUlasan: Sistem Catatan Siswa12Proyek: Manajemen Perpustakaan
Ikhtisar Proyekclass Buku dan PenggunaSistem PeminjamanFitur PencarianAntarmuka AdminPengujian dan IntegrasiLatihan sendiri: Compiler Python online