Jestem trakcie pisania kodu :
Jak zrobić aby ta funkcja search która jest w klasie library sprawdzała czy wpisany tutuł istniej w tej bazie filmów czyli w tej liście bo tak jak to napisałem to zawsze mi zwraca żę nie ma filmu nawet jak wpisze film z listy library ?
Druga rzecz jak jest def generate_views(self): k = random.choice(self.library)
to jak zrobić coś takiego ? "generate_views powinien losować jakiś film z biblioteki i dla niego losowa ilość razy odpalić metodę play która powiększa o 1. Alternatywnie powinno po prostu losowac liczbe i losowo ustawiać dla losowego filmu z biblioteki" jak coś takiego zrobić w tym kodzie?
Polecenie jest poniżej:
Zadanie: biblioteka filmów
A teraz coś z zupełnie innej beczki. Wyobraź sobie, że tworzysz system obsługujący bibliotekę filmów i seriali. Wykorzystaj wiedzę na temat programowania obiektowego i napisz program, który spełnia następujące założenia:
Jest w stanie przechowywać informacje na temat filmów, które znajdują się w systemie. Każdy film powinien mieć następujące atrybuty:
Tytuł
Rok wydania
Gatunek
Liczba odtworzeń
Umożliwia przechowywanie informacji na temat seriali. Każdy serial powinien mieć następujące atrybuty:
Tytuł
Rok wydania
Gatunek
Numer odcinka
Numer sezonu
Liczba odtworzeń
Filmy i seriale mają metodę play, która zwiększa liczbę odtworzeń danego tytułu o 1.
Po wyświetleniu serialu jako string pokazują się informacje o konkretnym odcinku, np.: “The Simpsons S01E05” (gdzie po S pokazany jest numer sezonu w notacji dwucyfrowej, natomiast po E - numer odcinka, również w zapisie dwucyfrowym).
Po wyświetleniu filmu jako string widoczne są tytuł i rok wydania np. “Pulp Fiction (1994)”.
Przechowuje filmy i seriale w jednej liście.
Dodatkowo:
Napisz funkcje get_movies oraz get_series, które będą filtrować listę i zwracać odpowiednio tylko filmy oraz tylko seriale. Posortuj listę wynikową alfabetycznie.
Napisz funkcję search, która wyszukuje film lub serial po jego tytule.
Napisz funkcję generate_views, która losowo wybiera element z biblioteki, a następnie dodaje mu losową (z zakresu od 1 do 100) ilość odtworzeń.
Napisz funkcję, która uruchomi generate_views 10 razy.
Napisz funkcję top_titles(), która zwróci wybraną ilość najpopularniejszych tytułów z biblioteki. Dla chętnych: dodaj do funkcji parametr content_type, którym wybierzesz czy mają zostać pokazane filmy, czy seriale.
kod:
import random
class Movie:
def __init__(self , title ,publish , type ,play_counter) -> None:
self.title = title
self.publish = publish
self.type = type
self.play_counter = play_counter = 0
def __repr__(self):
return f"{self.title} {self.publish} {self.type} {self.play_counter}"
def play(self ):
self.play_counter += 1
def generate_views(self ):
self.play_counter *=10
class Series(Movie):
def __init__(self , title , publish , type , play_counter , sezon , episode):
super().__init__( title , publish , type , play_counter )
self.sezon = sezon
self.episode = episode
def __repr__(self):
return f" {self.title} {self.publish} {self.type} {self.play_counter} {self.sezon} {self.episode} "
class Library:
def __init__(self):
self.library =[]
def add(self, object):
if not (type(object) == Movie or type(object) == Series): raise ValueError("To musi być film lub serial")
self.library.append(object)
def get_movies(self):
return [i for i in self.library if type(i) == Movie]
def get_series(self):
return [i for i in self.library if type(i) == Series]
def generate_views(self):
k = random.choice(self.library)
def search(self , obj ):
self.obj = obj
if self.obj == self.library:
print(f'Film o podanej nazwie {self.obj} jest w liście filmów')
else:
print(f'Podany film nie istniej {self.obj}')
m = Movie("Annabelle" , 2019 , "Horror" , 0)
s = Series("The walking dead", 2022 , "Horror", 0 , "E02" ,"S11")
x = Library()
x.add(m)
x.add(s)
s.generate_views()
m.generate_views()
s.play()
x.search("Annabelle 2019 Horror 0")
print(f'Film: {x.get_movies()}')
print(f'Serial: {x.get_series()}')