언어 자료구조 알고리즘/프로그래밍 실습
[python] 상속 실습 - 음악가, 피아니스트
언제나휴일
2020. 10. 30. 09:47
반응형
다음과 같은 시나리오에 맞게 구현하시오.
Musician.py
#Musician.py
#음악가: 이름(생성 시 필수), 스킬(생성 시 필수), 매력(생성 시 전달 안 함:0)
#소개하다 기능: 자신의 이름, 스킬, 매력 출력
#연습하다: 스킬이 0.1 증가
#연주하다:매력이 스킬*0.1 증가
Pianist.py
#Pianist.py
#피아니스트: 음악가에서 파생
#레벨을 생성 시 전달받는다.
#독주회를 하다 - 레벨이 (스킬+매력)*0.1 증가
main.py
import 구문을 적절하게 추가하시오.
mus = Pianist("송정수",1,1)#피아니스트(이름,스킬,레벨)
mus.Introduce()
for i in range(0,10):
for j in range(0,100):
mus.Ex()#연습하다
mus.Introduce()#소개하다
mus.Play()#연주하다
mus.Introduce()#소개하다
mus.SoloPlay()#독주회를 하다
mus.Introduce()#소개하다
구현 예
Musician.py
#Musician.py
#음악가: 이름(생성 시 필수), 스킬(생성 시 필수), 매력(생성 시 전달 안 함:0)
#소개하다 기능: 자신의 이름, 스킬, 매력 출력
#연습하다: 스킬이 0.1 증가
#연주하다:매력이 스킬*0.1 증가
class Musician:
def __init__(self,name,skill):
self.name = name
self.skill = skill
self.charm = 0
def Introduce(self):
print("이름:{0} 스킬:{1} 매력:{2}".format(self.name,self.skill,self.charm))
def Ex(self):
self.skill += 0.1
def Play(self):
self.charm += (self.skill*0.1)
Pianist.py
#Pianist.py
#피아니스트: 음악가에서 파생
#레벨을 생성 시 전달받는다.
#독주회를 하다 - 레벨이 (스킬+매력)*0.1 증가
from Musician import Musician
class Pianist(Musician):
def __init__(self,name,skill,level):
Musician.__init__(self,name,skill)
self.level = level
def SoloPlay(self):
self.level += ((self.skill+self.charm)*0.1)
Main.py
from Pianist import Pianist
mus = Pianist("송정수",1,1)#피아니스트(이름,스킬,레벨)
mus.Introduce()
for i in range(0,10):
for j in range(0,100):
mus.Ex()#연습하다
mus.Introduce()#소개하다
mus.Play()#연주하다
mus.Introduce()#소개하다
mus.SoloPlay()#독주회를 하다
mus.Introduce()#소개하다
print("level:",mus.level)
반응형