Python 강좌 : 제 14강 - 조건문

Python if

Python 강좌 : 제 14강 - 조건문
[ Python ] - 윤대희

조건문(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의 연산 결과를 반전



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가 됩니다.

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

수식의 우선 순위는 아래와 같습니다.


연산자 우선 순위(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가 됩니다.

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

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



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 거짓값으로 구성할 수 있습니다.

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



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post Python 강좌 : 제 13강 - Set 기초 연산 ⤧  Next post Python 강좌 : 제 15강 - 반복문
    Python Category