Today I Learned (TIL)/Python

[TIL] Python 베이직 - 3회차

신짜린 2024. 7. 23. 16:36

1. 함수란?

 코드 재사용성, 가독성 향상, 유지보수 용이하여 함수를 사용한다.

# 함수의 기본 구조
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

 

2. 클래스란?

 객체를 만들어 내기 위한 설계도 또는 틀과 같은 것을 의미한다.

 

- 계산기 만들어보기

# 연산 함수 만들어 보기
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로 묶어보기
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
# 누적, 리셋 기능 넣어보기
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 (계산기 리셋)
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

 

- 지역이름 넣어서 만들보기

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여, 그러믄 되겠네!

'Today I Learned (TIL) > Python' 카테고리의 다른 글

[TIL] Python 베이직 - 5회차  (0) 2024.07.30
[TIL] Python 베이직 - 4회차  (0) 2024.07.25
[TIL] 데이터 시각화 - Matplotlib  (4) 2024.07.22
[TIL] Python 챌린지 - 2회차  (0) 2024.07.19
[TIL] Python 챌린지 - 1회차  (0) 2024.07.17