[문제 1] 다음과 같은 <처리조건>에 맞게 Rectangle 클래스를 작성하시오.
<처리조건> 1. 멤버변수: 가로(width), 세로(height) 2. 생성자: 가로(width), 세로(height) 멤버 변수 초기화 3. 메서드(area_calc): 사각형의 넓이를 구하는 함수 사각형 넓이 = 가로 * 세로 4. 메서드(circum_calc): 사각형의 둘레를 구하는 함수 사각형 둘레 = (가로 + 세로) * 2 5. 기타 세부내용은 <출력 결과 예시> 참조 |
<출력 결과 예시> 사각형의 넓이와 둘레를 계산합니다. 사각형의 가로 입력: 10 사각형의 세로 입력: 5 --------------------------------- 사각형의 넓이: 50 사각형의 둘레: 30 --------------------------------- |
class Rectangle:
# 클래스 변수
width = height = 0
# [생성자]
def __init__(self, width, height):
self.width = width # 전역변수
self.height = height
# 넓이 계산
def area_calc(self):
area = self.width * self.height
return area
# 둘레 계산
def circum_calc(self):
circum = (self.width + self.height) * 2
return circum
# class object 생성
print('-'*30)
rec = Rectangle(w, h) # x 초기화
area = rec.area_cals() # 분산 함수 호출
print('사각형의 넓이:', area)
circum = rec.circum_calsc()
print('사각형의 둘레:', circum)
print('-'*30)
[문제 2] 동적 멤버 변수를 생성하여 다음과 같은 산포도를 구하는 클래스를 정의하시오.
<출력 결과 예시> 분산: 7.466666666666666 표준편차: 2.7325202042558927 |
class Scattering:
#생성자
def __init__(self, x):
self.x = x # x변수: 동적 전역변수
#메서드: 분산(var_func)
def var_func(self):
avg = mean(self.x) # 평균
diff = [ (i-avg)**2 for i in self.x]
# 분산: 동적 전역변수
self.var = sum(diff) / (len(self.x) - 1)
return self.var
#메서드: 표준편차(std_func)
def std_func(self):
st = sqrt(self.var) # 표준편차 계산
return st
[문제 3] 다음과 같은 <처리조건>에 맞게 Person 클래스를 작성하시오.
<처리조건> 1. 멤버 변수: 이름(name), 성별(gender), 나이(age) 2. 생성자: 이름, 성별, 나이 초기화 3. 메서드: display(이름, 성별, 나이 출력 기능) 4. 기타 세부내용은 <출력 결과 예시> 참조 |
<출력 결과 예시> 이름 입력: 유관순 나이 입력: 35 성별(male/female) 입력: female ====================== 이름: 유관순, 성별: 여자 나이: 35 ====================== |
class Person:
#생성자
def __init__(self, age, name, gender): # 인수 1개 이상 필요
self.age = age
self.name = name
self.gender = gender
#메서드(display)
def display(self):
print("="*30)
if self.gender == 'female':
print("이름: {}, 성별: {}\n나이: {}"
.format(self.name, "여자", self.age))
else:
print("이름: {}, 성별: {}\n나이: {}"
.format(self.name, "남자", self.age))
print("="*30)
[문제 4] 다음과 같은 <처리조건>에 맞게 Employee 클래스를 상속받아서 Permanent와 Temporary 클래스를 구현하시오.
<처리 조건> 1. 키보드로 정규직과 임시직을 구분한다. 2. 정규직인 경우에는 기본급과 상여금을 입력받아서 급여를 계산한다. 3. 임시직인 경우에는 작업시간과 시급을 입력받아서 급여를 계산한다. 4. 기타 세부내용은 <출력 결과 예시> 참고 |
<출력 결과 예시> 고용형태 선택(정규직<P>, 임시직<T>): >? P 이름: >? 홍길동 기본급: >? 2000000 상여금: >? 500000 ============================= 고용형태: 정규직 이름: 홍길동 급여: 2,500,000 고용형태 선택(정규직<P>, 임시직<T>): >?T 이름: >? 김길동 작업시간: >? 200 시급: >? 12000 ============================= 고용형태: 임시직 이름: 김길동 급여: 2,400,000 |
# 자식클래스 - 정규직
class Permanent(Employee):
class Permanent(Employee):
def __init__(self, name, gi, bonus):
super().__init__(name) # 부모 생성자 호출
self.pay = gi + bonus # 급여 = 기본급+상여금
# 자식클래스 - 임시직
class Temporary(Employee):
class Temporary(Employee):
def __init__(self, name, time, tpay):
super().__init__(name) # 부모 생성자 호출
self.pay = time * tpay # 급여 = 작업시간*시급
empType = input("고용형태 선택(정규직<P>, 임시직<T>) : ")
if empType == 'P' or empType == 'p':
name = input('이름: ')
gi = int(input('기본급: '))
bonus = int(input('상여금: '))
p = Permanent(name, gi, bonus)
print('='*30)
print('고용형태: 정규직')
print('이름: ', p.name)
print('급여: ', format(p.pay, '3,d'))
if empType == 'T' or empType == 't':
name = input('이름: ')
time = int(input('작업시간: '))
tpay = int(input('시급: '))
t = Temporary(name, time, tpay)
print('='*30)
print('고용형태: 임시직')
print('이름: ', t.name)
print('급여: ', format(t.pay, '3,d'))
else:
print('='*30)
print('입력 오류')
'Python > 실전 예제로 배우는 파이썬 프로그래밍' 카테고리의 다른 글
문자열 처리 (0) | 2023.03.17 |
---|---|
정규 표현식(Regular Expression) (0) | 2023.03.16 |
패키지와 모듈 (0) | 2023.03.14 |
내장클래스 (0) | 2023.03.13 |
객체지향 기법 (0) | 2023.03.12 |