-
Notifications
You must be signed in to change notification settings - Fork 0
/
sgt_20220929_classes_exer1.py
79 lines (57 loc) · 2.56 KB
/
sgt_20220929_classes_exer1.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
# # Day 10 - Work in Class - Classes and Objects
# 1. Song class
# define a class Song
# The class constructor needs to have three additional 3 parameters (self and 3 more!)
# title defaults to empty string
# author defaults to empty string
# lyrics by default empty tuple
# inside constructor method:
# set/store these three parameters inside objects variables of the same name (remember to use self!)
# print on the screen "New Song made" - (try also printing here author and title!)
# Minimum:
# Write a method sing that prints the song line by line on the screen, first printing the author and title, if any.
# Write a method yell that prints the song in capital letters line by line on the screen, first printing the author and title, if any.
# Bonus: make the above sing and chain methods chainable, so we can call them several times (chained)
# Bonus: create an additional parameter max_lines to yell and sing methods that prints only a certain number of lines for both sing and yell. Better do with some default value e.g. -1, at which all rows are then printed.
# Create multiple songs with lyrics
# Example:
# ziemelmeita = Song("Ziemeļmeita", "Jumprava", ["Gāju meklēt ziemeļmeitu","
# Garu, tālu ceļu veicu"])
# ziemelmeita.sing(1).yell()
# Outputs:
# Ziemeļmeita - Jumprava
# Gāju meklēt ziemeļmeitu
# Ziemeļmeita - Jumprava
# GĀJU MEKLĒT ZIEMEĻMEITU
# GARU, TĀLU CEĻU VEICU
# 2. Rap class
# For those feeling comfortable with class syntax, create a Rap class that inherits from Song
# # no new constructor method is necessary (you can if you want)
# add a new method break_it with two default parameters max_lines=-1 and drop equal to "yeah", which is similar to sing, but adds a drop after each word .
# Example:
# zrap = Rap("Ziemeļmeita", "Jumprava", ["Gāju meklēt ziemeļmeitu","
# Garu, tālu ceļu veicu"])
# zrap.break_it(1, "yah")
# Ziemeļmeita - Jumprava
# Gāju YAH meklēt YAH ziemeļmeitu YAH
import string
class Song:
def __init__(self, title, author, lyrics):
self.title = title
self.author = author
self.lyrics = lyrics
print(f"song title {self.title}, author {self.author}")
def sing(self):
for i in self.lyrics:
print(i)
def yell(self):
for i in self.lyrics:
print(i.upper())
def rap(self):
for i in self.lyrics:
print(i.replace(" ", " YAH "), end=" YAH \n")
ziemelmeita = Song("Ziemeļmeita", "Jumprava", ["Gāju meklēt ziemeļmeitu",
"Garu, tālu ceļu veicu"])
ziemelmeita.sing()
ziemelmeita.yell()
ziemelmeita.rap()