[250314금31H] 클래스메소드 & 실습

윤승호·2025년 3월 15일

두 번째 날이다. 클래스의 데코레이터에 대해 다뤘다. 대부분의 시간은 문제를 풀었다. 3의 배수를 구하는 첫 번째 문제부터 30분 넘게 걸렸다. 도저히 모르겠어서 중간중간 GPT찬스를 썼다. 이틀 동간 배운 내용을 주말에 미친듯이 복습해야겠다.

두 시간 넘도록 "aabbbcccddeeee"를 "a2b3c3d2e4"로 변환하는 코드를 알아내지 못했다. 오늘의 최대 난제다.

학습시간 09:00~01:00 (당일16H/누적31H)

학습내용

데코레이터

  • 클래스 변수란? 클래스 전반적으로 영향을 주는 변수
  • 데코레이터란? @가 붙은 것
  • 클래스메소드 코드예시
@classmethod
def print_number_of_users(cls):
   	print(f”총 유저 수는 {cls.count}”)
def __str__(self):
return f”사용자: {self.name}, 이메일: {self.email}”
  • 스태틱메소드 코드 예시
@staticmethod
def valid_email(email):
	return “@” in email

# email에 @가 있으면 True 아니면 False

ㄴ 첫 인수로 self를 안 받음
ㄴ 클래스에 속하며 인스턴스와 관계없음

까다로웠던 문제

  • 3의 배수 구하는 코드
    ㄴ i % 3 == 0 을 외워두면 좋을 것 같다
def print_multiples_of_three(n):
    for i in range(1, n):
      if i % 3 == 0:
        print(i)
  • 모음 지우는 코드
    ㄴ 이렇게 하는 게 맞는지 아직도 잘 모르겠다.
    ㄴ 모음에 해당하지 않는 글자를 재구성한다.
def remove_vowels(s):
  vowel = "aeiou"
  new_word = ""
  for str in s:
    if str not in vowel:
      new_word += str
  return(new_word)
  • 짝수 합 구하는 코드
    ㄴ 종료문을 메인코드 아래에 둬서 계속 실패했다.
    ㄴ 때론 실패 상황을 먼저 구현하는 게 정답인 것 같다.
# 문제
def sum_even_numbers(n):
  total = 0

  if n == 0:
    print("종료")
    return

  else:
    for even_num in range(1, n + 1):
      if even_num % 2 == 0:
        total += even_num
    print(f'"1부터 {n}까지의 짝수 합은 {total} 입니다."')

어려웠던 문제

  • 문자열 압축

    주어진 문자열에서 연속해서 같은 문자가 반복되는 경우, 그 문자와 반복 횟수를 이용해 새로운 형태로 문자열을 압축합니다. 예를 들어, "aabcccccaaa" 문자열은 "a2b1c5a3"로 압축될 수 있습니다.

지금 내 실력으론 도저히 모르겠다... 주말에 연구해 봐야지

profile
나는 AI 엔지니어가 된다.

0개의 댓글