확인한 환경과 범위

Windows · Python 3.12.4. 본문의 첫 예제를 실행하여 표준 출력과 예상 결과가 일치함을 확인했습니다. 연습문제의 모든 입력을 검증한 것은 아닙니다.

이 글의 순서 4개 단락

계산기에서 나눗셈을 선택했을 때 두 번째 수가 0이면 계산을 진행할 수 없습니다. 이번에는 나누기 전에 두 번째 수를 검사해 사용자에게 이유를 안내합니다. 예제는 Python 3.12를 기준으로 합니다.

나누기 전에 0인지 확인하기

Python에서 0으로 나누면 ZeroDivisionError라는 오류가 발생합니다. 이 오류는 프로그램 실행 중에 발생하는 예외의 한 종류입니다. 아직 예외를 처리하는 방법은 배우지 않았으므로, 이번에는 조건문으로 나눗셈을 실행하기 전에 0인지 확인합니다.

second == 0은 변수 second의 값이 0과 같은지 비교합니다. ==은 값을 비교하는 연산자이고, =은 변수에 값을 저장할 때 사용합니다. 입력을 float로 변환하므로 0, 0.0, -0.0은 모두 0과 같다고 판단합니다.

계산기에 검사 추가하기

앞 강의의 계산기처럼 두 수와 연산자를 입력받습니다. 나눗셈을 선택하면 두 번째 수를 먼저 검사합니다.

first = float(input("첫 번째 수: "))
second = float(input("두 번째 수: "))
operator = input("연산자 (+, -, *, /): ")

if operator == "+":
    print("결과:", first + second)
elif operator == "-":
    print("결과:", first - second)
elif operator == "*":
    print("결과:", first * second)
elif operator == "/":
    if second == 0:
        print("0으로 나눌 수 없습니다.")
    else:
        print("결과:", first / second)
else:
    print("지원하지 않는 연산자입니다.")

0으로 나누는 상황 처리하기 — 첫 예제의 실제 실행 결과

첫 번째 수로 8, 두 번째 수로 0, 연산자로 /를 순서대로 입력하면 예상되는 안내는 다음과 같습니다.

첫 번째 수: 두 번째 수: 연산자 (+, -, *, /): 0으로 나눌 수 없습니다.

입력한 값은 터미널에 표시될 수 있지만, 위 출력에는 프로그램이 직접 표시하는 문구만 적었습니다. operator == "/"인 경우 안에서 second == 0을 검사합니다. 조건이 참이면 안내문을 출력하고, 거짓이면 else에서 나눗셈 결과를 출력합니다. 따라서 8 / 0은 실행되지 않습니다.

실수와 경계 조건 살펴보기

0 검사를 나눗셈보다 뒤에 놓으면 검사가 실행되기 전에 오류가 발생합니다. 반드시 first / second를 계산하기 전에 검사해야 합니다. 또한 나누는 수는 두 번째 수이므로 first가 아니라 second를 확인합니다.

첫 번째 수가 0이고 두 번째 수가 0이 아니면 나눗셈이 가능합니다. 예를 들어 0, 4, /를 입력하면 예상 결과는 결과: 0.0입니다. 두 번째 수가 0이어도 덧셈, 뺄셈, 곱셈은 가능합니다. 지원하지 않는 연산자는 마지막 else에서 안내합니다.

이 코드는 숫자로 변환할 수 있는 입력을 전제로 합니다. abc처럼 숫자가 아닌 값을 입력했을 때의 처리는 이후 강의에서 배웁니다.

작은 연습문제

코드를 바꾸지 않고 첫 번째 수에 8, 두 번째 수에 2, 연산자에 /를 입력하면 어떤 결과가 나올지 생각해 보세요. 이어서 두 번째 수만 0으로 바꾸면 어떤 문구가 나올지도 예상해 보세요.

풀이: 두 번째 수가 2이면 second == 0이 거짓이므로 나눗셈을 실행해 결과: 4.0을 출력합니다. 두 번째 수가 0이면 조건이 참이므로 나눗셈 대신 0으로 나눌 수 없습니다.를 출력합니다.

CHECK THE SOURCE

참고한 공식 문서

기능 설명은 위 문서를 참고했으며, 예제의 입력·결과와 한계는 본문에 따로 기록했습니다.

한 줄씩 이해하고, 차곡차곡 기록합니다.이 글의 오류 제보하기 ↗