상위 목록: 하위 목록: 작성 날짜: 읽는 데 23 분 소요

조건문(if)

조건문(if)은 제어문 중 하나로, 알고리즘의 논리적 제어를 표현하는 수단입니다.

조건문을 통해 어떤 목적이나 상태가 만족할 때 실행되게 하거나, 특정 상태가 하나라도 만족할 때 등 알고리즘의 실행 흐름을 제어할 수 있습니다.

조건문은 조건문에 작성된 조건 판단식을 통해 실행 여부를 결정하게 됩니다.

조건 판단식이 참(True) 값일 때 조건문 내부의 알고리즘을 실행하게 됩니다.

Python에서는 if, elif, else 또는 Tuple, Dictionary, 삼항 연산자을 이용하여 조건문을 구성할 수 있습니다.



조건 판단식

조건 판단식은 주로 관계 연산자(Relational Operator)논리 연산자(Logical Operator) 등을 통해 식을 구성합니다.

관계 연산자는 등식이나 부등식을 사용해 표현하며, 종류는 다음과 같습니다.


관계 연산자(Relational Operator)

연산 의미
x > y x가 y보다 큼
x >= y x가 y보다 크거나 같음
x < y x가 y보다 작음
x <= y x가 y보다 작거나 같음
x == y x와 y가 같음
x != y x와 y가 같지 않음


논리 연산자는 앞선 6강의 비트 연산과 동일하거나 비슷한 의미를 갖습니다.

논리곱(and), 논리합(or), 논리부정(not) 등을 통해 표현할 수 있습니다.

주로, 복합적인 조건 판단식을 구성할 때 사용합니다.


논리 연산자(Logical Operator)

연산 의미
x and y x와 y의 연산 결과가 모두 참 값
x or y x와 y의 연산 결과 중 하나라도 참 값
not x x의 연산 결과를 반전


연산자 우선 순위(Operators Precedence)

연산 의미
** 거듭 제곱
~x, +x, -x 단항 연산
*, @, /, //, % 곱셈 및 나누기 연산
«, » Bitwise Shift
& Bitwise AND
^ Bitwise XOR
| Bitwise OR
>, >=, <, <= 비교 연산자
==, != 비교 연산자(평등)
in, not in, is, is not 식별 연산자
not 논리 연산자
and 논리 연산자
or 논리 연산자


연산자에는 우선 순위가 존재하며, 연산자 우선 순위 표의 순서대로 우선시합니다.

연산자 우선 순위 표에서 확인할 수 있듯이 andor보다 먼저 연산됩니다.

True or True and False 연산은 and가 먼저 연산되므로 True or (True and False)가 됩니다.

즉, 최종 결과는 True가 됩니다.

연산자 우선 순위를 모두 외우고 사용하는 것은 불가능하며, 코드 구성에 있어서 효율적이지도 않습니다.

그러므로, 소괄호를 사용해 먼저 연산될 수식을 설정합니다.



if

a = 100
if a > 100:
    print("크다")
elif a == 100:
    print("같다")
else:
    print("작다")
결과
같다

콜론(:)탭(Tab)을 이용하여 해당 조건문에 대한 내용을 구성할 수 있습니다.

조건문은 첫 분기(if)에 부합하지 않으면 다음 분기(elif)로 넘어가며, 어떤 분기에도 포함되지 않는 경우 최종 분기(else)로 넘어갑니다.

만약, 최종 분기(else)를 작성하지 않으면, 어떠한 분기도 포함되지 않아, 분기를 무시하고 넘어갑니다.


a = 100
b = 40

if (100 <= a < 130) and not (50 < a < 100):
    print("if-1 : 모두 조건에 만족")

if a < 50 or (b - 40) == 0:
    print("if-2 : 하나라도 만족")

if b > 0 or b > 0 and a < 50:
    print("if-3 : 조건 우선식")
결과
if-1 : 모두 조건에 만족
if-2 : 하나라도 만족
if-3 : 조건 우선식

조건문을 사용할 때 주의점은 조건식 내부에도 우선 순위가 있다는 점입니다.

if-1if-2 조건에는 명시적으로 소괄호(())를 사용해 연산이 우성되어야할 정보를 입력했습니다.

하지만, if-3을 확인해본다면, True or True and False가 되어, 어떤 연산이 우선될지 알 수 없습니다.

(True or True) and False로 소괄호가 앞에 연결되었다면, True and False가 되어 최종적으로 False가 됩니다.

True or (True and False)로 소괄호가 뒤에 연결되었다면, True or False가 되어 최종적으로 True가 됩니다.

즉, 조건식 내부에도 우선 순위가 있음을 확인할 수 있습니다.



Tuple

a = 5
if a > 5:
    a = a*2
    print(a)
else:
    a = a-4
    print(a)


a = 5
b = (a-4, a*2) [a>5]  
print(b)
결과
1
1

튜플을 이용하여 if문처럼 사용할 수 있습니다.

튜플을 생성하여 (거짓, 참) [조건]으로 사용할 수 있습니다.



Dictionary

a = 5
if a == 1:
    print("일")
elif a == 2:
    print("이")
elif a == 3:
    print("삼")
else:
    print("알 수 없음")

data = {1 : "일", 2 : "이", 3 : "삼"}
b = data.get(a, "알 수 없음")

print(b)
결과
알 수 없음
알 수 없음

사전을 이용하여 if문처럼 사용할 수 있습니다.

사전을 생성하여 keyvalue 값을 할당합니다.

사전.get(key, 예외)을 이용하여 key를 호출하여 value를 불러옵니다. 값이 없는 경우 예외 구문을 출력합니다.



삼항 연산자

a = 5
if a > 5:
    a = a * 2
    print(a)
else:
    a = a - 4
    print(a)


a = 5
b = a * 2 if a > 5 else a - 4

print(b)
결과
1
1

삼항 연산자를 사용하여 코드를 간략화 할 수 있습니다.

참 값 if 조건 else 거짓 값으로 구성할 수 있습니다.

조건에 부합할 경우 참 값을 실행하게 되며 부합하지 않을 경우 거짓 값을 실행합니다.

댓글 남기기