-
Notifications
You must be signed in to change notification settings - Fork 2
/
gu-ito-2-15.py
119 lines (77 loc) · 4.53 KB
/
gu-ito-2-15.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
'''Design a Python program for a bookstore that uses classes and inheritance. The bookstore sells two types of items: books and magazines. Both books and magazines have a title and a price. However, a book also has an author, while a magazine has an issue number. Create classes to represent both items and use inheritance to avoid code duplication.
Write a method in each class to print the details of the book or magazine. Also, write a method in each class to change the price of the book or magazine.
Sample Input:
The Great Gatsby, F. Scott Fitzgerald, 15.99
Time, 5.99, 23
12.99
4.99
Sample Output:
Book: The Great Gatsby by F. Scott Fitzgerald, priced at $15.99
Magazine: Time, Issue No. 23, priced at $5.99
Book: The Great Gatsby by F. Scott Fitzgerald, priced at $12.99
Magazine: Time, Issue No. 23, priced at $4.99
Explanation:
In the sample output, each line represents the details of an item in the bookstore:
The first line is the details of a book. It's "The Great Gatsby" by F. Scott Fitzgerald, priced at $15.99.
The second line is the details of a magazine. It's "Time", Issue No. 23, priced at $5.99.
The third line is the updated details of the book after changing the price. The price of "The Great Gatsby" has been updated to $12.99.
The fourth line is the updated details of the magazine after changing the price. The price of "Time", Issue No. 23, has been updated to $4.99.
These details are printed by calling the print_details() method of each item object. The method is defined in each class and prints the details specific to that item.
This is an example of single level inheritance, where the Book and Magazine classes inherit from a common base class (Item). The base class defines properties and methods common to all items (like name and price), while the derived classes add properties and methods specific to books and magazines (like author and issue number).
The change_price() method in each class demonstrates the concept of reusability in object-oriented programming. Instead of writing separate functions to change the price of a book and a magazine, we write a single method in the base class (Item) that both Book and Magazine inherit. This allows us to change the price of any item, regardless of whether it's a book or a magazine.
Constraints:
The title of the book or magazine is a string and can contain any printable ASCII characters.
The author of the book is a string and can contain any printable ASCII characters.
The issue number of the magazine is an integer and can be any positive integer.
The price of the book or magazine is a float and can be any positive number.
'''
class Item:
def __init__(self, title, price):
#..... YOUR CODE STARTS HERE .....
self.title=title
self.price=price
#..... YOUR CODE ENDS HERE .....
def change_price(self, new_price):
#..... YOUR CODE STARTS HERE .....
self.new_price=new_price
self.price=self.new_price
#..... YOUR CODE ENDS HERE .....
def print_details(self):
#..... YOUR CODE STARTS HERE .....
print(f"Item: {self.title}, priced at ${self.price}")
#..... YOUR CODE ENDS HERE .....
class Book(Item):
def __init__(self, title, author, price):
#..... YOUR CODE STARTS HERE .....
super().__init__(title,price)
self.author=author
#..... YOUR CODE ENDS HERE .....
def print_details(self):
#..... YOUR CODE STARTS HERE .....
print(f"Book: {self.title} by {self.author}, priced at ${self.price}")
#..... YOUR CODE ENDS HERE .....
class Magazine(Item):
def __init__(self, title, price, issue):
#..... YOUR CODE STARTS HERE .....
super().__init__(title,price)
self.issue=issue
#..... YOUR CODE ENDS HERE .....
def print_details(self):
#..... YOUR CODE STARTS HERE .....
print(f"Magazine: {self.title}, Issue No. {self.issue}, priced at ${self.price}")
#..... YOUR CODE ENDS HERE .....
def clean_input(ip):
return str(ip.strip())
book_title, book_author, book_price = map(clean_input, input().strip().split(","))
mz_title, mz_price, mz_issue = map(clean_input, input().strip().split(","))
book1 = Book(book_title, book_author, book_price)
magazine1 = Magazine(mz_title, mz_price, mz_issue)
# Printing initial details
book1.print_details()
magazine1.print_details()
# Changing prices
book1.change_price(input())
magazine1.change_price(input())
# Printing updated details
book1.print_details()
magazine1.print_details()