Menu
Coddy logo textTech

요약 - 간단한 계산기

Coddy Python 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 64개 중 8번째.

challenge icon

챌린지

중급

calculator.py에 있는 Calculator 클래스는 다음을 수행해야 합니다:

  1. result 속성을 0으로 초기화하는 생성자를 가집니다.
  2. add, subtract, multiply, divide 메서드를 포함하며, 각 메서드는 다음을 수행합니다:
    • 숫자를 인자로 받습니다.
    • 현재 result와 해당 숫자 사이의 연산을 수행합니다.
    • result 속성을 업데이트합니다.
    • 새로운 결과값을 반환합니다.
  3. result를 0으로 리셋하는 clear 메서드를 포함합니다.
  4. 현재 결과값을 반환하는 get_result 메서드를 포함합니다.
  5. divide 메서드의 경우, 다음과 같이 0으로 나누는 상황을 처리해야 합니다:
    • 제공된 숫자가 0인지 확인합니다.
    • 0인 경우, 정확히 "Error: Division by zero"를 출력합니다.
    • 이 경우 result 속성을 변경하지 않고 그대로 둡니다.
    • 변경되지 않은 result 값을 반환합니다.

driver.py 파일은 작성한 Calculator 클래스를 임포트하고 다음과 유사한 코드로 테스트합니다:

from calculator import Calculator

calc = Calculator()
calc.add(5)       # result becomes 5
calc.multiply(3)  # result becomes 15
calc.subtract(2)  # result becomes 13
calc.divide(0)    # prints "Error: Division by zero", result remains 13
calc.divide(2)    # result becomes 6.5
calc.clear()      # result becomes 0

calculator.py 파일의 TODO 주석을 따라 필요한 모든 기능을 구현하세요.

치트 시트

기본적인 산술 연산을 수행하는 Calculator 클래스를 생성합니다:

class Calculator:
    def __init__(self):
        self.result = 0
    
    def add(self, number):
        self.result += number
        return self.result
    
    def subtract(self, number):
        self.result -= number
        return self.result
    
    def multiply(self, number):
        self.result *= number
        return self.result
    
    def divide(self, number):
        if number == 0:
            print("Error: Division by zero")
            return self.result
        self.result /= number
        return self.result
    
    def clear(self):
        self.result = 0
    
    def get_result(self):
        return self.result

사용 예시:

calc = Calculator()
calc.add(5)       # result는 5가 됩니다
calc.multiply(3)  # result는 15가 됩니다
calc.divide(0)    # 에러를 출력하며, result는 변경되지 않습니다

직접 해보기

from calculator import Calculator

# 테스트 케이스 핸들러
test_case = input()

if test_case == "constructor_test":
    # 계산기 생성 및 초기 상태 테스트
    calc = Calculator()
    print(f"Initial result: {calc.get_result()}")
    print("Calculator created successfully")

elif test_case == "addition_test":
    # 더하기 기능 테스트
    calc = Calculator()
    result1 = calc.add(10)
    print(f"After adding 10: {result1}")
    result2 = calc.add(5)
    print(f"After adding 5: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "subtraction_test":
    # 빼기 기능 테스트
    calc = Calculator()
    calc.add(20)  # 20으로 시작
    result1 = calc.subtract(8)
    print(f"After subtracting 8 from 20: {result1}")
    result2 = calc.subtract(2)
    print(f"After subtracting 2: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "multiplication_test":
    # 곱하기 기능 테스트
    calc = Calculator()
    calc.add(5)  # 5로 시작
    result1 = calc.multiply(4)
    print(f"After multiplying by 4: {result1}")
    result2 = calc.multiply(2)
    print(f"After multiplying by 2: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "division_test":
    # 나누기 기능 테스트
    calc = Calculator()
    calc.add(100)  # 100으로 시작
    result1 = calc.divide(4)
    print(f"After dividing by 4: {result1}")
    result2 = calc.divide(5)
    print(f"After dividing by 5: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "division_by_zero_test":
    # 0으로 나누기 오류 처리 테스트
    calc = Calculator()
    calc.add(50)
    print(f"Initial value: {calc.get_result()}")
    result = calc.divide(0)  # 오류 메시지가 출력되어야 함
    print(f"Result after division by zero: {result}")
    print(f"Value unchanged: {calc.get_result()}")

elif test_case == "clear_test":
    # 초기화(clear) 기능 테스트
    calc = Calculator()
    calc.add(25)
    calc.multiply(3)
    print(f"Before clear: {calc.get_result()}")
    result = calc.clear()
    print(f"After clear: {result}")
    print(f"Current result: {calc.get_result()}")

elif test_case == "comprehensive_test":
    # 모든 연산을 순서대로 테스트
    calc = Calculator()
    
    # 일련의 연산 수행
    calc.add(10)        # result = 10
    calc.multiply(3)    # result = 30
    calc.subtract(5)    # result = 25
    calc.divide(5)      # result = 5
    
    print(f"After sequence of operations: {calc.get_result()}")
    
    # 오류 처리 테스트
    calc.divide(0)      # 오류가 출력되어야 함
    print(f"After division by zero attempt: {calc.get_result()}")
    
    # 초기화하고 새로 시작
    calc.clear()
    calc.add(100)
    print(f"After clear and add 100: {calc.get_result()}")

else:
    print("Unknown test case")

Object Oriented Programming의 모든 레슨