프로그래밍을 하다 보면 조건문을 활용하여 특정 상황에 따라 다른 동작을 수행해야 할 때가 많습니다. 특히, 파이썬과 같은 프로그래밍 언어에서는 `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: |
올바른 조건문 작성 방법
이러한 오류를 방지하기 위해서는 조건문을 작성할 때 각 조건을 명확하게 작성해야 합니다. 위의 잘못된 코드를 수정하여 올바른 코드를 작성하는 방법은 다음과 같습니다.
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
연산자를 중첩할 때는 각 조건이 어떻게 해석되는지를 생각해야 합니다.
잘못된 사용으로 인해 의도치 않은 결과를 피하기 위해서는 조건을 명확하게 작성하고, 필요할 경우 리스트나 튜플을 활용하는 방법도 생각해야 합니다. 이러한 원칙을 잘 지킨다면, 코드의 품질과 가독성을 높일 수 있을 것입니다.