전체 방문자
오늘
어제
이대코
ServerNeverDown
이대코
  • 분류 전체보기 (110)
    • Project (9)
      • GASIP_대학 커뮤니티 (5)
      • CATCHROOM_야놀자중고숙박거래 (2)
      • CANCER-FINE_암환자를 위한 정보 제공 사.. (2)
    • Development (46)
      • Python (9)
      • Java (8)
      • Kotlin (1)
      • Spring&Springboot (4)
      • BootCamp (10)
      • DevOps (1)
      • TrobleShooting (6)
      • Network (1)
      • DataBase (2)
      • OS (1)
      • Design Pattern (2)
    • Coding Test (52)
      • BOJ (1)
      • DFS,BFS (4)
      • 그리디 알고리즘 (6)
      • Dynamic Programming (2)
      • 이진 탐색 (0)
      • 초보자를 위한 파이썬 300제 (29)
      • 구현 (10)
    • Stock (3)
      • Market View (2)
      • Analysis of stocks (0)
      • Knowledge (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

인기 글

hELLO · Designed By 정상우.
이대코

ServerNeverDown

Coding Test/초보자를 위한 파이썬 300제

[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(261~270)_12.22

2022. 12. 22. 18:49

안녕하세요. Harry입니다.

 

현재 풀이중인 초보자를 위한 파이썬 300제 풀이를 진행하면서 나름대로 파악했던 문제 출제 의도와 풀이를 작성했습니다.

모든 풀이는 직접 Pycharm을 통해 에러없이 출력됨을 확인 후 작성했습니다.

 

초보자를 위한 파이썬 300제 풀이는 Wikidocs에 무료로 배포된 전자책을 활용했습니다/

https://wikidocs.net/book/922

[학습목표]

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
    'Coding Test/초보자를 위한 파이썬 300제' 카테고리의 다른 글
    • [독학 파이썬] 초보자를 위한 파이썬 300제 풀이(281~290)_12.23
    • [독학 파이썬] 초보자를 위한 파이썬 300제 풀이(271~280)_12.23
    • [독학 파이썬] 초보자를 위한 파이썬 300제 풀이(251~260)_12.22
    • [독학 파이썬] 초보자를 위한 파이썬 300제 풀이(241~250)_12.22
    이대코
    이대코
    20대에 대장암 걸린 코틀린/자바 백엔드 개발자의 블로그입니다.

    티스토리툴바