3/24 ~ 3/28 파이썬 개인과제 + W2

justyoon·2023년 3월 28일
1

AI5 Python/Django

목록 보기
11/31

Prblm

  • 3/24

    기본 가이드에 필요한 개념을 떠올렸는데 쉽게 떠오르지 않았다. 가령 요구사항 1번째의 터미널에서 유저가 이름을 입력하면 플레이어가 생성되도록 input()함수를 사용해야 하는데 이런 기본적인 생각이 쉽게 떠오르지 않아서 계속 답답해했다.

  • WIL

    기초와 심화개념을 들었지만 실제로 코드를 작성하는 능력은 또 다른 부분이라고 느꼇다. 생각한 기능을 코드로 풀어내기 쉽지 않았다.

  • 3/27

    클래스와 객체를 조금씩 이해했지만 투자한 시간대비 효율적이라 느끼지 못함.

  • 3/28

    과제를 제출하고 팀과제를 하기 위해 추가하려했던 기능들을 생각해봤다. 주석으로만 남은 코드도 있고, 코드를 깔끔하게 정리하거나 기능을 추가하기 어려웠다.

Try

  • 3/24

    기본 가이드에 같이 제공된 힌트를 보면서 전체적인 구상을 해보았다. 기본 가이드를 따라서 Character 클래스를 상속받는 sub 클래스를 몬스터, 플레이어로 지정해주었다.

    class Character: # super class입니다
    	def __init__(self, name, hp, power):
    	...
    class Monster(Character): # sub class입니다
    	def __init__(self, name, hp, power):
    	...
    class Player(Character): # sub class입니다
    	def __init__(self, name, hp, power, mp, mpower):
    	...
  • WIL

    이번주동안 파이썬 기초~심화에 해당하는 강의를 들었는데 계속 잊어버리는 느낌이 들어서 튜터님께 문의를 드렸다.

  • 3/27

    정해진 시간안에 가장 빠른 결과물을 내는 방법은 좋은 코드를 보거나 문제를 풀면서 터득한다고 결론을 내렸다. 늦게 까지 공부하는 팀원분들이 계셔서 live share를 통해 코드 가이드를 요청함.

  • 3/28

    주석을 사용하면서 작업을하면 순차적으로 코드를 짜는데 도움이 된다고 해서 최대한 주석을 쓰면서 코드를 작성했다. 특정 조건을 만족시 스탯이 오르는 메서드를 만들어봄.

    class Player(Character): # 플레이어가 몬스터를 잡으면 스탯업하는 메서드
    	def stats_up(self):
       	self.hp = self.max_hp + random.randint(10, 20)
           self.mp = self.max_mp + random.randint(10, 20)
           self.power = self.power + random.randint(5, 10)
           self.mpower = self.mpower + random.randint(5, 10)

Solve

  • 3/24

    class에 __init__메서드를 사용할 경우 인스턴스 생성 시 해당 메서드가 무조건 실행된다.

    class Monster(Character):
    	def __init__(self, name, hp, power):
    		super().__init__(name, hp, power)
           ...

    super class의 parameter인 (name, hp, power)를 그대로 상속받는다.

  • WIL

    파이썬 기초, 심화과정을 공부한 대상으로 기초문법을 익숙하게 사용하고 심화 문법을 경험해 보는 게 목표라고는 했지만, 기존에 알고리즘 or 개념문제를 꾸준히 풀지 않았다면 바로바로 코드가 나오지 않는게 당연하다고 해주셨다. 나도모르게 조급해지고 있었는데 다시 차분하게 하기로..

  • 3/27

    monster = Monster('monster', 100, 10)
    player = Player(nephalem, 100, 10, 100, 10)

    각각 monster, player 객체를 생성하는 코드인데 바보같이 클래스를 잘 선언하고도 생성해야 하는 건 떠올리지 못했는데 팀원의 가이드로 while 반복문에서 공격타입을 선택하는 코드와 승리/패배 조건문으로 게임을 끝내는 코드까지 만들 수 있었다.

    while 'game':
       command = input('일반공격 마법공격 : ')
  • 3/28

    코드를 계속 보다보니 기본적인 틀이 눈에 들어오는 것 같다. 물론 코드로 바꾸지 못하고 주석으로만 남겨진 부분도 아직 많았지만 작성한 주석을 기준으로 내용을 하나씩 검토하면서 정리가 필요한 코드, 불필요한 코드 혹은 재미있는 속성이 포함된 코드를 고민하다보면 클래스에 추가할 수 있는 메서드및 함수를 만들 수 있었다.

Learn

  • 3/24

    py
    sun class의 메서드 선언시 상속을 받았다면 별도의 선언이 필요 없지만 변경이 필요한 클래스가 있다면 sub class 자체에 메서드를 overriding 할 수 있다. 같은 이름의 메서드라도 sub class에 선언하면 상속이 아닌, 해당 클래스에 선언된 메서드를 사용한다.

  • WIL

    파이썬 기초, 심화

  • 3/27

    module (ex: random, time등)을 활용해 상속받은 클래스의 특정 코드를 변경해서 사용할 수 있었다. random의 randint혹은 choice같은 내장된 기능들을 잘 쓰게 된다면 편리하게 코드를 작성할 수 있다.

  • 3/28

    while 반복문에서 continue와 break를 사용해 조건에 맞게 반복문을 계속하거나 빠져나올 수 있다. 또한 클래스부터 선언한 후 기능을 주석처리 후 코드화하는 방법이 상대적으로 정리가 잘 되었고, 오류가 있는부분도 수정하기 간편했다.

profile
with gratitude, optimism is sustainable

0개의 댓글