if 문에서 or 중첩 사용 시 피해야 할 함정

프로그래밍에서 조건문은 매우 중요한 역할을 담당하고 있습니다. 특히 `if` 문은 프로그래밍의 기본적인 흐름 제어 구조로, 특정 조건을 기준으로 코드의 실행 경로를 결정합니다.

그러나 이러한 `if` 문을 사용할 때, 특히 `or` 연산자를 중첩하여 사용할 경우 몇 가지 주의해야 할 점이 있습니다. 이번 글에서는 `if` 문에서 `or` 중첩 사용 시 발생할 수 있는 함정과 이를 어떻게 피할 수 있는지에 대해 자세히 살펴보겠습니다.

썸네일

or 연산자의 이해

or 연산자는 두 개 이상의 조건 중 하나라도 참이면 결과를 참으로 평가하는 논리 연산자입니다. 예를 들어, A or B라는 표현은 A가 참이거나 B가 참일 때 참으로 평가됩니다.

파이썬과 같은 언어에서 or는 매우 유용하게 사용되지만, 중첩 사용할 경우 잘못 해석될 수 있는 여지가 있습니다. 다음의 예를 살펴보겠습니다.

“`python
month = 12

if month == 2:
print(“February”)
else:
if month == 1 or 3 or 5 or 7 or 8 or 10 or 12:
print(“Month has 31 days”)
“`

위의 코드를 실행해 보면, month가 12일 때도 “Month has 31 days”가 출력됩니다. 이는 or 연산자의 잘못된 사용 때문입니다.

month == 1 or 3 or 5 or 7 or 8 or 10 or 12라는 조건은 month가 1일 때만 참으로 평가되며, 나머지 조건들은 숫자와의 비교가 이루어지지 않기 때문에 모두 참으로 간주됩니다. 즉, or 연산자는 비교 연산자가 아니라 boolean 타입의 논리 연산자입니다.

이러한 문제를 피하기 위해서는 각 조건을 명확히 작성해야 합니다.

올바른 사용법

올바르게 조건을 작성하는 방법은 다음과 같습니다.

python
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
print("Month has 31 days")

위와 같이 작성하면, 각 조건이 명확히 비교되므로 코드의 의도를 잘 드러낼 수 있습니다.

조건 표현 방식 설명
month == 1 or 3 잘못된 표현, 의도한 비교가 아님
month == 1 or month == 3 올바른 표현, 각 조건이 명확히 비교됨

중첩 if 문의 사용

조건을 여러 개 중첩하여 사용할 때도 주의해야 할 점이 있습니다. 중첩 if 문은 특정 조건이 참일 때 추가적인 조건을 평가하는 데 유용합니다.

그러나 너무 많은 중첩이 들어가면 가독성이 떨어지고, 실수로 오류를 범하기 쉬워집니다. 예를 들어, 학생들의 시험 성적을 평가하는 경우를 생각해 보겠습니다.

세 개의 과목 중 두 과목 이상 60점 이상일 때 합격으로 처리하는 로직을 구현한다고 가정해 보겠습니다.

python
if math_score > 60:
if english_score > 60:
print("합격")
else:
if science_score > 60:
print("합격")
else:
print("탈락")
else:
if english_score > 60:
if science_score > 60:
print("합격")
else:
print("탈락")
else:
print("탈락")

위와 같이 작성하면 조건이 복잡해져서 나중에 수정하거나 이해하기가 어려워질 수 있습니다. 가독성을 높이기 위해 중첩된 조건을 줄이고, orand 연산자를 적절히 활용하여 간결하게 작성하는 것이 좋습니다.

조건 처리 방식 설명
중첩 if 가독성이 떨어짐, 유지보수가 어려워짐
ifor, and 혼합 간결하고 가독성이 좋음, 코드 이해가 쉬움

다른 내용도 보러가기 #1

복잡한 조건 처리

조건이 복잡해질 경우, if 문 대신 andor 함수를 사용하는 것이 좋습니다. 예를 들어, 다음과 같은 조건을 처리할 때:

  • 국어, 수학, 영어 점수가 각각 60점 이상이면 합격
  • 그렇지 않으면 탈락

이 경우, 중첩된 if 문보다는 orand를 사용하여 간단한 표현으로 코드를 작성할 수 있습니다.

python
if (math_score >= 60 and english_score >= 60) or (science_score >= 60):
print("합격")
else:
print("탈락")

이렇게 작성하면 조건이 훨씬 간단해지고 가독성이 높아집니다. 이는 코드의 유지보수성을 높이고, 나중에 다른 조건이 추가되었을 때도 쉽게 변경할 수 있는 장점이 있습니다.

조건 처리 방법 설명
중첩 if 복잡하고 가독성이 떨어짐
or, and 사용 간결하고 가독성이 높음

결론

if 문에서 or 연산자를 중첩하여 사용할 때는 그 의미를 명확히 알아보고, 조건을 분명히 표현하는 것이 필요합니다. 잘못된 사용은 의도치 않은 결과를 초래할 수 있으므로, 각 조건을 명확히 비교하는 방식으로 코드를 작성하는 것이 바람직합니다.

또한 중첩이 많아질 경우, 가독성을 높이기 위해 andor를 혼합하여 사용하면 더욱 효과적인 코드 작성을 할 수 있습니다. 코드를 작성하는 과정에서 이러한 주의사항을 염두에 두고, 항상 가독성과 유지보수성을 고려하는 것이 필요합니다.

이를 통해 프로그래밍의 효율을 높이고, 더 나은 결과를 이끌어낼 수 있을 것입니다.

관련 영상

같이 보면 좋은 글

답글 남기기

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