if 문에서 or 중첩 사용 시 유의사항

프로그래밍을 하다 보면 조건문을 활용하여 특정 상황에 따라 다른 동작을 수행해야 할 때가 많습니다. 특히, 파이썬과 같은 프로그래밍 언어에서는 `if` 문을 통해 이러한 조건을 손쉽게 구현할 수 있습니다.

그러나 `if` 문 내부에서 `or`를 중첩하여 사용할 경우, 의도하지 않은 결과를 초래할 수 있습니다. 이번 글에서는 `if` 문과 `or` 연산자를 사용할 때 주의해야 할 점과 이를 올바르게 사용하는 방법에 대해 자세히 알아보도록 하겠습니다.

썸네일

if 문과 or 연산자의 기본 개념

if 문은 프로그래밍 언어에서 조건을 검사하여 특정 코드 블록을 실행하는 데 사용됩니다. 조건이 참(True)일 경우 해당 블록의 코드를 실행하고, 그렇지 않을 경우 다른 코드를 실행하도록 합니다.

예를 들어, 특정 점수에 따라 학생의 학점을 부여하는 상황을 생각해볼 수 있습니다. 아래는 간단한 if 문의 예시입니다.

“`python
score = 85

if score >= 90:
print(“A학점”)
else:
print(“B학점”)
“`

이 경우, score가 90 이상이면 “A학점”을 출력하고, 그렇지 않으면 “B학점”을 출력하게 됩니다. or 연산자는 두 개 이상의 조건 중 하나라도 참이면 전체 조건이 참이 되는 논리 연산자입니다.

예를 들어, 두 개의 조건이 있을 때, 그 중 하나라도 참이라면 결과는 참이 됩니다. 다음은 or 연산자를 사용하는 예시입니다.

“`python
month = 12

if month == 1 or month == 2 or month == 12:
print(“겨울입니다.”)
else:
print(“겨울이 아닙니다.”)
“`

이 코드는 month가 1, 2, 또는 12일 경우 “겨울입니다. “를 출력하게 됩니다.

or 중첩 사용 시의 문제점

위의 예시처럼 or 연산자를 사용할 때 주의해야 할 점은 조건문의 구조입니다. 가끔 프로그래머는 두 개의 조건을 간단하게 표현하고자 or 연산자를 중첩하여 사용하게 됩니다.

예를 들어, 다음과 같은 코드를 고려해 보겠습니다.

“`python
month = 12

if month == 2:
print(“2월입니다.”)
else:
if month == 4 or month == 6 or month == 9 or month == 11:
print(“30일입니다.”)
“`

이 코드에서는 month가 2일 경우와 4, 6, 9, 11일 경우를 각각 검사합니다. 그러나 만약 아래와 같이 작성한다면 원하는 결과를 얻지 못할 수 있습니다.

python
if month == 4 or 6 or 9 or 11:
print("30일입니다.")

이 경우, month가 4일 때는 조건이 참이지만, month가 6, 9, 11일 때는 조건이 잘못 해석되어 True 값을 가지게 됩니다. 즉, 위의 조건문은 다음과 같이 해석됩니다.

python
if (month == 4) or (6) or (9) or (11):

여기서 6, 9, 11은 모두 참으로 평가되기 때문에 의도치 않게 모든 경우에 해당 코드가 실행됩니다. 이는 or 연산자가 비교 연산자가 아닐 뿐만 아니라, 불리언 타입을 결정하는 연산자라는 점을 간과한 결과입니다.

잘못된 코드 의도한 코드
if month == 4 or 6 or 9 or 11: if month == 4 or month == 6 or month == 9 or month == 11:

다른 내용도 보러가기 #1

올바른 조건문 작성 방법

이러한 오류를 방지하기 위해서는 조건문을 작성할 때 각 조건을 명확하게 작성해야 합니다. 위의 잘못된 코드를 수정하여 올바른 코드를 작성하는 방법은 다음과 같습니다.

python
if month == 4 or month == 6 or month == 9 or month == 11:
print("30일입니다.")

이렇게 하면 month가 4, 6, 9, 11일 경우에만 “30일입니다. “가 출력됩니다.

조건을 명확하게 지정함으로써 코드의 가독성과 유지보수성을 높일 수 있습니다. 또한, 파이썬에서는 리스트나 튜플을 사용하여 조건을 보다 간단하게 작성할 수도 있습니다.

예를 들어, 다음과 같이 작성할 수 있습니다.

python
if month in (4, 6, 9, 11):
print("30일입니다.")

이렇게 하면 month가 4, 6, 9, 11 중 하나일 경우에만 해당 코드를 실행할 수 있습니다. 이 방법은 코드가 간결해지고, 읽기 쉬워지는 장점이 있습니다.

중첩 if 문과 사용 예시

if 문은 중첩하여 사용할 수도 있습니다. 중첩 if 문은 특정 조건이 참일 때 또 다른 조건을 검사하고자 할 때 유용합니다.

예를 들어, 학생의 점수에 따라 학점을 매기는 프로그램을 작성할 수 있습니다. 아래는 학생의 점수를 기준으로 A, B, C 학점을 부여하는 중첩 if 문의 예시입니다.

“`python
score = 85

if score >= 90:
print(“A학점”)
else:
if score >= 80:
print(“B학점”)
else:
print(“C학점”)
“`

이 경우 score가 90 이상일 경우 “A학점”을 출력하고, 80 이상일 경우 “B학점”, 그 외의 경우에는 “C학점”을 출력하게 됩니다.

점수 범위 학점
90 이상 A
80 이상 – 90 미만 B
80 미만 C

이처럼 중첩 if 문은 조건을 세분화하여 다양한 결과를 얻는 데 유용합니다. 하지만 중첩이 깊어질수록 코드가 복잡해지기 때문에, 가독성을 고려하여 적절하게 활용해야 합니다.

결론

if 문과 or 연산자를 사용할 때는 조건문의 구조와 의미를 명확하게 알아보는 것이 필요합니다. 특히, or 연산자를 중첩할 때는 각 조건이 어떻게 해석되는지를 생각해야 합니다.

잘못된 사용으로 인해 의도치 않은 결과를 피하기 위해서는 조건을 명확하게 작성하고, 필요할 경우 리스트나 튜플을 활용하는 방법도 생각해야 합니다. 이러한 원칙을 잘 지킨다면, 코드의 품질과 가독성을 높일 수 있을 것입니다.

관련 영상

같이 보면 좋은 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다