import numpy as np
14wk-1: 퀴즈9
Caution
- 전북대 학생들을 시험당일 학생증을 지참할 것. (출석체크 및 본인확인) 학생증 외에 신분증 여권등도 가능.
- 부정행위 (카카오톡 채팅을 통한 코드공유, 생성형모델 사용, 대리시험 등) 적발시 F 처리함.
- 퀴즈 중 지각할 경우 지각사실을 기록함. 하지만 별 다른 감점은 하지 않음.
.ipynb
파일 형태로 제출된 답안지만 채점하며 그 외의 형식 (.hwp
,.py
등)은 채점하지 않음. 즉 0점 처리함.
1. – 30점
아래와 같은 기능을 하도록 클래스 Coin
을 설계하라.
# 예시1
= Coin() ins
ins.toss()
동전을 던져서 앞면이 나왔습니다.
ins.toss()
동전을 던져서 뒷면이 나왔습니다.
ins
결과: ['앞면', '뒷면']
len(ins)
2
0] ins[
'앞면'
1] ins[
'뒷면'
#
# 예시2
= Coin() ins
for i in range(10):
ins.toss()
동전을 던져서 앞면이 나왔습니다.
동전을 던져서 앞면이 나왔습니다.
동전을 던져서 뒷면이 나왔습니다.
동전을 던져서 뒷면이 나왔습니다.
동전을 던져서 앞면이 나왔습니다.
동전을 던져서 뒷면이 나왔습니다.
동전을 던져서 앞면이 나왔습니다.
동전을 던져서 뒷면이 나왔습니다.
동전을 던져서 앞면이 나왔습니다.
동전을 던져서 뒷면이 나왔습니다.
ins
결과: ['앞면', '앞면', '뒷면', '뒷면', '앞면', '뒷면', '앞면', '뒷면', '앞면', '뒷면']
len(ins)
10
-1] ins[
'뒷면'
#
(풀이)
class Coin:
def __init__(self):
self.results = []
def toss(self):
= np.random.choice(['앞면','뒷면'])
result self.results.append(result)
print(f"동전을 던져서 {result}이 나왔습니다.")
def __repr__(self):
return f"결과: {self.results}"
def __getitem__(self,idx):
return self.results[idx]
def __len__(self):
return len(self.results)
2. – 30점
아래와 같은 기능을 하도록 클래스 Container
을 설계하라.
# 예시
= Container()
ins ins
아이템: []
+ 1 + 1 + 2 ins
아이템: [1, 1, 2]
+ 2 + 2 + 2 ins
아이템: [1, 1, 2, 2, 2, 2]
+ 2 + 2 + 2 + 4 ins
아이템: [1, 1, 2, 2, 2, 2, 2, 2, 2, 4]
ins.freq()
{1: 2, 2: 7, 4: 1}
#
(풀이)
class Container:
def __init__(self):
self.items = []
def __add__(self,v):
self.items.append(v)
return self
def __repr__(self):
return f"아이템: {self.items}"
def freq(self):
return {s:self.items.count(s) for s in set(self.items)}
3. – 40점
아래와 같은 기능을 하도록 Quiz
클래스를 만들어라.
# 예시
= Quiz()
guebin = Quiz() daho
10)
guebin.save_score( guebin
퀴즈1: 10
8)
daho.save_score( daho
퀴즈1: 8
== daho, guebin > daho # 퀴즈의 총합비교 guebin
(False, True)
8)
guebin.save_score( guebin
퀴즈1: 10
퀴즈2: 8
10)
daho.save_score( daho
퀴즈1: 8
퀴즈2: 10
== daho, guebin > daho # 퀴즈의 총합비교 guebin
(True, False)
-1] == daho[-1], guebin[-1] > daho[-1] # 최근 퀴즈점수 비교 guebin[
(False, False)
#
(풀이)
class Quiz:
def __init__(self):
self.scores = []
self.n = 0
self.text = ""
self.score = None
def save_score(self,score):
self.score = score
self.n = self.n +1
self.scores.append(self.score)
def __getitem__(self,idx):
return self.scores[-idx]
def __repr__(self):
self.text = self.text + f"퀴즈{self.n}: {self.score}\n"
return self.text
def __eq__(self,other):
return sum(self.scores) == sum(other.scores)
def __gt__(self,other):
return sum(self.scores) > sum(other.scores)