코딩도장 심사문제모음
34.6 심사문제: 게임 캐릭터 클래스 만들기
codermun
2020. 11. 8. 21:12
728x90
반응형
표준 입력으로 게임 캐릭터 능력치(체력, 마나, AP)가 입력됩니다. 다음 소스 코드에서 애니(Annie) 클래스를 작성하여 티버(tibbers) 스킬의 피해량이 출력되게 만드세요. 티버의 피해량은 AP * 0.65 + 400이며 AP(Ability Power, 주문력)는 마법 능력치를 뜻합니다.

사용한 코드
1. class
2. def
3. self
첫 접근 방법
클래스 이름/ 메서드 이름/ 매개변수 3개 를 이용하기만 하면
문제를 해결 할 수 있다.
풀이
아래와 같이 self, 매개변수를 이용하고 모든 매개변수를 그대로 속성으로 만들어준다.
class Annie:
def __init__ (self, health, mana, ability_power):
self.health = health
self.mana = mana
self.ability_power = ability_power
티버라는 메서드를 하나 더 생성하고
티버 메서드에서 속성 a_p를 이용해 피해량을 계속하는 식을 만들어준다.
class Annie:
def __init__ (self, health, mana, ability_power):
self.health = health
self.mana = mana
self.ability_power = ability_power
def tibbers (self):
self.ap = self.ability_power * 0.65 + 400
print('티버 : 피해량', self.ap)
class Annie:
def __init__ (self, health, mana, ability_power):
self.health = health
self.mana = mana
self.ability_power = ability_power
def tibbers (self):
self.ap = self.ability_power * 0.65 + 400
print('티버 : 피해량', self.ap)
# AP * 0.65 + 400
health, mana, ability_power = map(float, input().split())
# 511.68 334.0 298
x = Annie(health=health, mana=mana, ability_power=ability_power)
x.tibbers()
# 티버 : 피해량 593.7

왜 틀린건지 이유를 찾아보았더니 print에서 티버 :(콜론) 사이에 띄어쓰기를해서 틀렸다.
문제를 보면 티버: 가 붙어있음을 확인 할 수 있다.

다른 풀이 (포매팅사용하기)
class Annie:
def __init__ (self, health, mana, ability_power):
self.health = health
self.mana = mana
self.ability_power = ability_power
def tibbers (self):
print('티버 : 피해량 {}'.format(self.ability_power * 0.65 + 400))
속성 ability_power를 그대로 가져와 {}.format 메서드를 사용하면 코드를 1줄 줄일 수 있다.
{}.format(값) // 값의 자리 속성을 그대로 가져와 계산식을 집어넣어도 어짜피 값(정수, 실수)이므로 정상 작동된다.

※ 실제 코딩 도장의 해법과 다를 수 있으며, 답은 여러가지가 존재합니다.
코드 지적 정말 감사히 받겠습니다.
728x90
반응형