안녕하세요. Harry입니다.
현재 풀이중인 초보자를 위한 파이썬 300제 풀이를 진행하면서 나름대로 파악했던 문제 출제 의도와 풀이를 작성했습니다.
모든 풀이는 직접 Pycharm을 통해 에러없이 출력됨을 확인 후 작성했습니다.
초보자를 위한 파이썬 300제 풀이는 Wikidocs에 무료로 배포된 전자책을 활용했습니다/
[학습목표]
1. 각 문제별 요구하는 역량(출제의도)이 무엇인지 파악할 수 있다.
2. 각 문제별 요구하는 기술 및 기능을 활용하여 문제를 해결할 수 있다.
261 ~ 270
261 Stock 클래스 생성
주식 종목에 대한 정보를 저장하는 Stock 클래스를 정의해보세요. 클래스는 속성과 메서드를 갖고 있지 않습니다.
- 요구역량 : 클래스를 생성할 수 있는가?
정답확인
class Stock:
pass
262 생성자
Stock 클래스의 객체가 생성될 때 종목명과 종목코드를 입력 받을 수 있도록 생성자를 정의해보세요.
- 요구역량 : 클래스 내 init 메서드를 정의하고, 인스턴스를 생성하여 원하는 정보를 출력할 수 있도록 클래스를 생성할 수 있는가?
삼성 = Stock("삼성전자", "005930")
정답확인class Stock:
def __init__(self,name,code):
self.name = name
self.code = code
self.info = name,code
삼성 = Stock("삼성전자", "005930")
print(삼성.info)
263 메서드
객체에 종목명을 입력할 수 있는 set_name 메서드를 추가해보세요.
- 요구역량 : 인스턴스에서 작성된 특정값을 출력할 수 있는 메서드를 정의할 수 있는가?
a = Stock(None, None)
a.set_name("삼성전자")
정답확인class Stock:
def __init__(self,name,code):
self.name = name
self.code = code
self.info = name,code
def set_name(self,name):
self.name = name
a = Stock(None, None)
a.set_name("삼성전자")
print(a.name)
264 메서드
객체에 종목코드를 입력할 수 있는 set_code 메서드를 추가해보세요.
- 요구역량 : 인스턴스에서 작성된 특정값을 출력할 수 있는 메서드를 정의할 수 있는가?
a = Stock(None, None)
a.set_code("005930")
정답확인class Stock:
def __init__(self,name,code):
self.name = name
self.code = code
self.info = name,code
def set_name(self,name):
self.name = name
def set_code(self,code):
self.code = code
265 메서드
종목명과 종목코드를 리턴하는 get_name, get_code 메서드를 추가하세요. 해당 메서드를 사용하여 종목명과 종목코드를 얻고 이를 출력해보세요.
- 요구역량 : 인스턴스에서 작성된 특정값을 출력할 수 있는 메서드를 정의할 수 있는가?
아직 self.name = name이 뭔지,, 쓰는 이유가 뭔지,,잘 모르겠습니다...
근데 250번대에서 한번 해보니깐 어떻게 하는지는 감은 잡히는 것 같아요. 일단 느낌적으로 써봤는데 에러안뜨고 출력되서 뭔가 신기..!
삼성 = Stock("삼성전자", "005930")
정답확인
class Stock:
def __init__(self,name,code):
self.name = name
self.code = code
self.info = name,code
def set_name(self,name):
self.name = name
def set_code(self,code):
self.code = code
def get_name(self):
return self.name
def get_code(self):
return self.code
삼성 = Stock("삼성전자", "005930")
print(삼성.get_name())
print(삼성.get_code())
266 객체의 속성값 업데이트
생성자에서 종목명, 종목코드, PER, PBR, 배당수익률을 입력 받을 수 있도록 생성자를 수정하세요. PER, PBR, 배당수익률은 float 타입입니다.
- 요구역량 : 클래스 내 init 메서드에서 생성자를 추가할 수 있는가?
정답확인
class Stock:
def __init__(self,name,code,PER,PBR,배당수익률):
self.name = name
self.code = code
self.info = name,code
self.PER = PER
self.PBR = PBR
self.배당수익률 = 배당수익률
def set_name(self,name):
self.name = name
def set_code(self,code):
self.code = code
def get_name(self):
return self.name
def get_code(self):
return self.code
267 객체 생성
266번에서 정의한 생성자를 통해 다음 정보를 갖는 객체를 생성해보세요.
- 요구역량 : 표를 보고 알맞은 객체를 생성할 수 있는가?항목 | 정보 |
종목명 | 삼성전자 |
종목코드 | 005930 |
PER | 15.79 |
PBR | 1.33 |
배당수익률 | 2.83 |
class Stock:
def __init__(self,name,code,PER,PBR,배당수익률):
self.name = name
self.code = code
self.info = name,code,PER,PBR,배당수익률
self.PER = PER
self.PBR = PBR
self.배당수익률 = 배당수익률
def set_name(self,name):
self.name = name
def set_code(self,code):
self.code = code
def get_name(self):
return self.name
def get_code(self):
return self.code
삼성 = Stock("삼성전자", "005930",15.79, 1.33, 2.83)
print(삼성.info)
268 객체의 속성 수정
PER, PBR, 배당수익률은 변경될 수 있는 값입니다. 이 값을 변경할 때 사용하는 set_per, set_pbr, set_dividend 메서드를 추가하세요.
-요구역량 : 특정 기능을 가진 메서드를 함수에 추가할 수 있는가?
정답확인
class Stock:
def __init__(self,name,code,PER,PBR,dividend):
self.name = name
self.code = code
self.info = name,code,PER,PBR,dividend
self.PER = PER
self.PBR = PBR
self.dividend = dividend
def set_name(self,name):
self.name = name
def set_code(self,code):
self.code = code
def set_PER(self,PER):
self.PER = PER
def set_PBR(self,PBR):
self.PBR = PBR
def set_dividend(self,dividend):
self.dividend = dividend
269 객체의 속성 수정
267번에서 생성한 객체에 set_per 메서드를 호출하여 per 값을 12.75로 수정해보세요.
- 요구역량 : 클래스 내 생성한 함수를 실제로 객체에 적용하여 활용할 수 있는가?
정답확인
class Stock:
def __init__(self,name,code,PER,PBR,dividend):
self.name = name
self.code = code
self.info = name,code,PER,PBR,dividend
self.PER = PER
self.PBR = PBR
self.dividend = dividend
def set_name(self,name):
self.name = name
def set_code(self,code):
self.code = code
def set_PER(self,PER):
self.PER = PER
def set_PBR(self,PBR):
self.PBR = PBR
def set_dividend(self,dividend):
self.dividend = dividend
def get_name(self):
return self.name
def get_code(self):
return self.code
삼성 = Stock("삼성전자", "005930",15.79, 1.33, 2.83)
삼성.set_PER(12.75)
print(삼성.PER)
270 여러 종목의 객체 생성
아래의 표를 참조하여 3종목에 대해 객체를 생성하고 이를 파이썬 리스트에 저장하세요. 파이썬 리스트에 저장된 각 종목에 대해 for 루프를 통해 종목코드와 PER을 출력해보세요.
- 요구역량 : 객체 생성 후 하나의 리스트로 묶어서 원하는 요소만 출력할 수 있는가?
저랑 답지랑 차이가 있는 부분은 list.append(삼성전자)입니다.(저는 전체 튜플을 출력할 수 있는 self.info를 따로 두고 list.append(삼성전자.info)를 했습니다.)
Stock 클래스에 바인딩된 삼성전자/현대차/LG전자를 그대로 list에 append 한 후 출력하니 이상한 문자의 나열이,,잘 이해가 안가서 위와 같이 풀었습니다.
다만 답지에서 지향하는 방식은 최대한 class의 요소를 활용할 수 있는 식으로 풀었다고 느껴집니다.
마지막에 print(i.code,i.PER)을 볼 때, class 내 함수 값을 불러오기 때문입니다.
종목명 | 종목코드 | PER | PBR | 배당수익률 |
삼성전자 | 005930 | 15.79 | 1.33 | 2.83 |
현대차 | 005380 | 8.70 | 0.35 | 4.27 |
LG전자 | 066570 | 317.34 | 0.69 | 1.37 |
class Stock:
def __init__(self,name,code,PER,PBR,dividend):
self.name = name
self.code = code
self.info = name,code,PER,PBR,dividend
self.PER = PER
self.PBR = PBR
self.dividend = dividend
def set_name(self,name):
self.name = name
def set_code(self,code):
self.code = code
def set_PER(self,PER):
self.PER = PER
def set_PBR(self,PBR):
self.PBR = PBR
def set_dividend(self,dividend):
self.dividend = dividend
def get_name(self):
return self.name
def get_code(self):
return self.code
삼성전자 = Stock("삼성전자", "005930",15.79, 1.33, 2.83)
현대차 = Stock("현대차", "005380", 8.7, 0.35, 1.37)
LG전자 = Stock("LG전자", "066570", 317.34, 0.69, 1.37)
list = []
list.append(삼성전자.info)
list.append(현대차.info)
list.append(LG전자.info)
for i in list:
print(i[0],i[2])
#답지(마지막 부분만 다름)
list = []
list.append(삼성전자)
list.append(현대차)
list.append(LG전자)
for i in list:
print(i.code, i.PER)
250번대에서 아예 감을 못잡다가, (지금도 못잡았지만) 대충 따라해보니 풀리긴 하는 군요,, 그래도 아직 해결안된 의문들이 많습니다.
뭔지는 알겠는데, 뭐가 어디서 어떻게 연결되어서 이렇게 쓰이는지,
삼성전자 = Stock(~~~~) 이것은 무슨 의미를 갖고 있는지?
- self.name = name이 뭔지? 이건 왜 쓰는지?
- 객체와 인스턴스의 차이는?
- list.append(삼성전자)를 하는 것이 어떤 의미가 있는건지?
- 등등,,
해결 안된 의문이 있는 채로 포스팅하는 점 양해부탁드립니다. (이제 파이썬 공부하기 시작한 뉴비라,,궁금한 게 많습니다)
감사합니다.
'Coding Test > 초보자를 위한 파이썬 300제' 카테고리의 다른 글
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(281~290)_12.23 (0) | 2022.12.23 |
---|---|
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(271~280)_12.23 (0) | 2022.12.23 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(251~260)_12.22 (0) | 2022.12.22 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(241~250)_12.22 (0) | 2022.12.22 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(231~240)_12.21 (0) | 2022.12.21 |