<함수란?>
<함수를 사용하는 이유?>
<함수 사용 예제>
def add(a, b):
return a + b
# 사용 예제
result = add(3, 5)
print(result) # 출력: 8
def say():
return 'Hi'
# 사용 예제
greeting = say()
print(greeting) # 출력: Hi
def add(a, b):
print("%d, %d의 합은 %d입니다." % (a, b, a+b))
# 사용 예제
add(3, 5) # 출력: 3, 5의 합은 8입니다.
def say():
print('Hi')
# 사용 예제
say() # 출력: Hi
def calculate(a, b):
sum_value = a + b
diff_value = a - b
prod_value = a * b
quot_value = a / b if b != 0 else None
return sum_value, diff_value, prod_value, quot_value
# 사용 예제
sum_result, diff_result, prod_result, quot_result = calculate(10, 2)
print(f"합: {sum_result}, 차: {diff_result}, 곱: {prod_result}, 나눗셈: {quot_result}")
# 출력: 합: 12, 차: 8, 곱: 20, 나눗셈: 5.0
<재귀함수란?>
함수가 자기 자신을 호출하는 함수
이는 문제가 더 이상 작아질 수 없을 때까지 문제를 반복적으로 나누고, 그 후에 작은 문제들의 해답을 모아서 원래 문제를 해결하는 방식입니다
팩토리얼 계산 예제
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
# 사용 예제
result = factorial(5)
print(result) # 출력: 120
→ 여기서 factorial 함수는 n이 1일 때 1을 반환하고, 그렇지 않을 경우 n * factorial(n - 1)을 호출
→ 이렇게 함으로써 n이 1이 될 때까지 계속해서 자신을 호출
<클래스란?>
설계도 또는 틀
과 같은 의미<계산기 클래스를 만들어 보자>
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0:
return "Division by zero error"
return x / y
class Calculator:
def add(self, x, y):
return x + y
def subtract(self, x, y):
return x - y
def multiply(self, x, y):
return x * y
def divide(self, x, y):
if y == 0:
return "Division by zero error"
return x / y
# 클래스 인스턴스 생성
calc = Calculator()
# 연산 예시
print(calc.add(10, 5)) # 결과: 15
print(calc.subtract(10, 5)) # 결과: 5
print(calc.multiply(10, 5)) # 결과: 50
print(calc.divide(10, 5)) # 결과: 2.0
print(calc.divide(10, 0)) # 결과: Division by zero error
class AccumulatingCalculator:
def __init__(self):
self.total = 0 # 계산 결과를 누적하는 변수
def add(self, x):
self.total += x
return self.total
def subtract(self, x):
self.total -= x
return self.total
def multiply(self, x):
self.total *= x
return self.total
def divide(self, x):
if x == 0:
return "Division by zero error"
self.total /= x
return self.total
# 클래스 인스턴스 생성
acc_calc = AccumulatingCalculator()
# 연산 예시
print(acc_calc.add(10)) # 결과: 10 (0 + 10)
print(acc_calc.subtract(2)) # 결과: 8 (10 - 2)
print(acc_calc.multiply(5)) # 결과: 40 (8 * 5)
print(acc_calc.divide(2)) # 결과: 20 (40 / 2)
print(acc_calc.add(5)) # 결과: 25 (20 + 5)
class AccumulatingCalculator:
def __init__(self):
self.total = 0 # 계산 결과를 누적하는 변수
def add(self, x):
self.total += x
return self.total
def subtract(self, x):
self.total -= x
return self.total
def multiply(self, x):
self.total *= x
return self.total
def divide(self, x):
if x == 0:
return "Division by zero error"
self.total /= x
return self.total
def reset(self):
self.total = 0
return self.total
# 클래스 인스턴스 생성
acc_calc = AccumulatingCalculator()
# 연산 예시
print(acc_calc.add(10)) # 결과: 10 (0 + 10)
print(acc_calc.subtract(2)) # 결과: 8 (10 - 2)
print(acc_calc.multiply(5)) # 결과: 40 (8 * 5)
print(acc_calc.divide(2)) # 결과: 20 (40 / 2)
print(acc_calc.add(5)) # 결과: 25 (20 + 5)
print(acc_calc.reset()) # 결과: 0 (계산기 리셋)
<다량의 계산기를 만들어보자>
# 인스턴스 생성
calc1 = AccumulatingCalculator()
calc2 = AccumulatingCalculator()
calc3 = AccumulatingCalculator()
# 첫 번째 계산기 사용
calc1.add(50)
calc1.subtract(20)
print("Calc1 Total:", calc1.total) # 결과: 30
# 두 번째 계산기 사용
calc2.add(100)
calc2.multiply(2)
print("Calc2 Total:", calc2.total) # 결과: 200
# 세 번째 계산기 사용
calc3.add(25)
calc3.divide(5)
print("Calc3 Total:", calc3.total) # 결과: 5
# 각 계산기는 독립적으로 작동합니다.
class RegionalCalculator:
def __init__(self, region):
self.total = 0
self.region = region
def add(self, x):
self.total += x
return self._print_result()
def subtract(self, x):
self.total -= x
return self._print_result()
def multiply(self, x):
self.total *= x
return self._print_result()
def divide(self, x):
if x == 0:
return "Division by zero error"
self.total /= x
return self._print_result()
def reset(self):
self.total = 0
return self._print_result()
def _print_result(self):
if self.region == "경상도":
return f"{self.total}이다 잉가, 바람이 분다!"
elif self.region == "전라도":
return f"{self.total}이제 노라, 그렇구마잉!"
elif self.region == "충청도":
return f"{self.total}여, 그러믄 되겠네!"
else:
return self.total
# 각 지역별 계산기 인스턴스 생성
calc_gyeongsang = RegionalCalculator("경상도")
calc_jeolla = RegionalCalculator("전라도")
calc_chungcheong = RegionalCalculator("충청도")
# 경상도 계산기 사용
print(calc_gyeongsang.add(10)) # 출력: 10이다 잉가, 바람이 분다!
print(calc_gyeongsang.subtract(3)) # 출력: 7이다 잉가, 바람이 분다!
# 전라도 계산기 사용
print(calc_jeolla.multiply(5)) # 출력: 0이제 노라, 그렇구마잉!
print(calc_jeolla.add(100)) # 출력: 100이제 노라, 그렇구마잉!
# 충청도 계산기 사용
print(calc_chungcheong.divide(4)) # 출력: 0.0여, 그러믄 되겠네!
print(calc_chungcheong.add(40)) # 출력: 40.0여, 그러믄 되겠네!