15wk-1: 퀴즈10

Author

최규빈

Published

June 12, 2024

Caution
  • 전북대 학생들을 시험당일 학생증을 지참할 것. (출석체크 및 본인확인) 학생증 외에 신분증 여권등도 가능.
  • 부정행위 (카카오톡 채팅을 통한 코드공유, 생성형모델 사용, 대리시험 등) 적발시 F 처리함.
  • 퀴즈 중 지각할 경우 지각사실을 기록함. 하지만 별 다른 감점은 하지 않음.
  • .ipynb 파일 형태로 제출된 답안지만 채점하며 그 외의 형식 (.hwp, .py 등)은 채점하지 않음. 즉 0점 처리함.

1. – 50점

정확한 구현시에만 점수있음. 이외는 0점

아래와 같은 기능을 하는 클래스 묶음생성기를 설계하라.

# 예시1

묶음 = 묶음생성기([1,2,3,4,5,6,7,8],n_groups=2)
[x for x in 묶음]
[[1, 3, 5, 7], [2, 4, 6, 8]]

#

# 예시2

animlas = ["사자", "호랑이", "코끼리", "닭", "얼룩말", "캥거루", "판다", "나무늘보", "돼지", "양"]
묶음 = 묶음생성기(animlas,n_groups=3)
[x for x in 묶음]
[['사자', '닭', '판다', '양'], ['호랑이', '얼룩말', '나무늘보'], ['코끼리', '캥거루', '돼지']]

#

# 예시3

sounds = ['어흥', '크앙', '뿌우', '꼬끼오', '이히힝', '캥거캥거', '냠냠', 'Zzz', '꾸울', '메에']
묶음 = 묶음생성기(list(zip(animlas,sounds)),n_groups=4)
[x for x in 묶음]
[[('사자', '어흥'), ('얼룩말', '이히힝'), ('돼지', '꾸울')],
 [('호랑이', '크앙'), ('캥거루', '캥거캥거'), ('양', '메에')],
 [('코끼리', '뿌우'), ('판다', '냠냠')],
 [('닭', '꼬끼오'), ('나무늘보', 'Zzz')]]

#

(풀이)

class 묶음생성기:
    def __init__(self,array,n_groups):
        self.array = array 
        self.n_groups = n_groups 
        self.i = 0 
    def __iter__(self):
        return self
    def __next__(self):
        if self.i < self.n_groups:
            group = self.array[self.i::self.n_groups] 
            self.i = self.i + 1 
            return group
        else: 
            raise(StopIteration)            

2. – 50점

정확한 구현시에만 점수있음. 이외에는 0점

아래와 같은 기능을 하는 클래스 애완동물을 설계하라.

# 예시1

하니 = 애완동물(name="하니",sound="멍")
나비 = 애완동물(name="나비",sound="야오옹")
동물명 <하니> 와 같이 살기로 결심했습니다.
동물명 <나비> 와 같이 살기로 결심했습니다.
하니()
하니가 멍하고 울었습니다.
나비()
나비가 야오옹하고 울었습니다.
애완동물.모두울어보세요()
하니가 멍하고 울었습니다.
나비가 야오옹하고 울었습니다.

#

# 예시2

꿀이 = 애완동물(name="꿀이",sound="꿀!") 
크앙이 = 애완동물(name="크앙이",sound="크앙!") 
동물명 <꿀이> 와 같이 살기로 결심했습니다.
동물명 <크앙이> 와 같이 살기로 결심했습니다.
꿀이()
꿀이가 꿀!하고 울었습니다.
크앙이()
크앙이가 크앙!하고 울었습니다.
애완동물.모두모여보세요()
하니,나비,꿀이,크앙이가 모두 모였습니다.
애완동물.모두울어보세요()
하니가 멍하고 울었습니다.
나비가 야오옹하고 울었습니다.
꿀이가 꿀!하고 울었습니다.
크앙이가 크앙!하고 울었습니다.

#

# 예시3

복순이 = 애완동물(name="복순이",sound="멍멍") 
동물명 <복순이> 와 같이 살기로 결심했습니다.
복순이()
복순이가 멍멍하고 울었습니다.
애완동물.모두모여보세요()
하니,나비,꿀이,크앙이,복순이가 모두 모였습니다.
애완동물.모두울어보세요()
하니가 멍하고 울었습니다.
나비가 야오옹하고 울었습니다.
꿀이가 꿀!하고 울었습니다.
크앙이가 크앙!하고 울었습니다.
복순이가 멍멍하고 울었습니다.

#

(풀이)

class 애완동물:
    petlist = []
    def __init__(self,name,sound):
        self.name = name 
        self.sound = sound
        print(f"동물명 <{self.name}> 와 같이 살기로 결심했습니다.") 
        애완동물.petlist.append(self)
    def __call__(self):
        print(f"{self.name}{self.sound}하고 울었습니다.")
    @classmethod 
    def 모두울어보세요(cls):
        for pet in cls.petlist:
            pet()
    @classmethod
    def 모두모여보세요(cls):
        text = ",".join([pet.name for pet in cls.petlist])
        print(f"{text}가 모두 모였습니다.")