9. 조건문(if) > 파이썬 기초

본문 바로가기
사이트 내 전체검색

회원로그인

올서베이넷
무료 온라인 설문 사이트
OVITII
웹 프레젠테이션 도구

파이썬 기초

9. 조건문(if)

페이지정보

글쓴이 관리자 조회 23,118 조회 날짜 19-05-07 00:45 / Update:19-05-19 00:12
댓글 0 댓글

SNS 공유

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

내용

조건문 - if

 

조건문이란 어떠한 조건을 검사하여, 참일 경우와 거짓일 경우에 따라 수행할 문장을 결정하는 구문이다.

조건문의 조건에는 참과 거짓을 판별할 수 있도록 작성하여야 하며, 이와 관련하여 비교 연산자논리 연산자등 참과 거짓을 판별할 수 있는 연산자가 사용된다.

 

if 조건문의 기본 구조

 

다음은 if와 else를 이용한 조건문의 기본 구조이다.

if 조건문:

    문장1

    문장2

else:

    문장3

    문장4

 

조건문을 검사해서 참이면 if문 바로 다음의 문장(if 블록 - 문장1, 문장2)들을 수행하고, 조건문이 거짓이면 else문 다음의 문장(else 블록 - 문장3, 문장4)들을 수행하게 된다. else문은 생략가능하며, if문 없이 독립적으로 사용할 수 없다.

 

들여쓰기 주의

 

문장1, 문장2는 if 조건문의 수행구문이다. 따라서 if 조건문: 다음에 들여쓰기를 해주어야 하고, 이를 어기면 오류가 발생한다.

모든 문장은 상위 구문에 종속될때 들여쓰기를 해주어야 한다.

 

아래와 같이 들여쓰기를 해주어야 한다.

if 조건문:

    문장1

    문장2

    문장3

 

다음과 같이 작성하면 오류가 발생한다. "문장2"를 들여쓰기 칸을 일치하지 않았기 때문이다.

if 조건문:

    문장1

  문장2

    문장3

 

 

조건문 기본 예제 만들어보기

 

다음의 문장을 조건문으로 코딩해본다.

"돈이 있으면 콜라를 산다. 콜라를 살 돈이 모자라면 우유를 산다."

 

소스

money = 500
cola_price = 600
milk_price = 300


if money > 0:
    if money >= cola_price:
        print("콜라를 산다.")
    else:
        print("우유를 산다.")
else:
    print("콜라도 우유도 살수 없다")

우유를 산다

조건문 다음에 콜론(:)이 들어가야 한다.

 

소스 분석

money = 500

cola_price = 600

milk_price = 300 

변수이다.

프로그램에 필요한 돈, 콜라 가격, 우유 가격을 설정하였다.

if money > 0:

    문장1

else:

    문장2

if 조건문이다.

 

money > 0 이 조건이 된다. 

이 조건은 "money가 0보다 크다"이며, 변수에 저장된 money는 500이므로 0보다 크다는 명제(조건)가 참이 된다.

따라서 이 조건문에서는 문장1이 실행된다.

 

만약 money가 없거나(0) 0보다 작다면 money > 0 은 거짓이 되므로, 문장2가 실행된다.

문장1

 

    if money >= cola_price:

        print("콜라를 산다.")

    else:

        print("우유를 산다.")

문장1에 해당하는 구문이다.

코드에서 보면 알수 있지만, if 조건문의 내부 문장도 if 조건문이 될 수 있다.

if 조건문은 하위, 하위로 무한으로 생성이 가능하다.

 

변수에서 보면 money = 500이고, cola_price = 600이다.

따라서 "money가 cola_price보다 크거나 같다"는 조건은 거짓이 된다. 그러므로 이 코드에서는 if 블록이 실행되지 않고 else 블록이 실행된다.

즉, print("우유를 산다.")가 실행이 되므로 코드의 결과는 "우유를 산다" 가 된다.

문장2

 

    print("콜라도 우유도 살수 없다")

만약 변수의 money가 0보다 작거나 같으면, 문장2가 실행된다.

코드의 money 변수 값을 변경해가면서 결과를 테스트 해 본다.

 

 

1269732368_1557215828.5532.png

 

 

조건문 예제 코드에서 money > 0,  money >= cola_price 라는 조건이 있었다. 조건이라는 것은 그 결과가 참이냐, 거짓이냐로 구분할 수 있어야 한다. 이를 위해서 조건문에서는 비교연산자(<, >, ==, !=, >=, <=)가 사용된다.

 

비교연산자는 아래의 표와 같이 해석한다.

 

비교 연산자 (Comparison Operators):

a = 10, b = 20 이라 가정한다.

연산자

설명

예제

==

값이 동일하다

(a == b) → False

!=

값이 동일하지 않다

(a != b) → True

>

왼쪽 값이 오른쪽 값보다 크다

(a > b) → False

<

왼쪽 값이 오른쪽 값보다 작다

(a < b) → True

>=

왼쪽 값이 오른쪽 값보다 크거나 동일하다

(a >= b) → False

<=

왼쪽 값이 오른쪽 값보다 작거나 동일하다

(a <= b) → True

 

위의 연산자의 해석에 따라

money > 0 ----> True

money >= cola_price ----> False

가 된 것이다.

 

 

여러 조건 동시에 사용하기

 

조건문에는 하나의 조건이 아니라 여러 개의 조건이 동시에 들어갈 수 있다.

위의 예제코드를 아래처럼 변경해 본다.

 

소스

money = 500
cola_price = 600
milk_price = 300


if money > 0 and money >= cola_price:
    print("콜라를 산다.")
else:
    if money >= milk_price:
        print("우유를 산다")
    else:
        print("콜라도 우유도 살수 없다")

우유를 산다

조건문 다음에 콜론(:)이 들어가야 한다.

 

소스 분석

money = 500

cola_price = 600

milk_price = 300 

변수이다.

프로그램에 필요한 돈, 콜라 가격, 우유 가격을 설정하였다.

if money > 0 and money >= cola_price:

    문장1

else:

    문장2

if 조건문이다.

 

money > 0 and money >= cola_price가 조건이 된다. 

이 조건은 "money가 0보다 크다 그리고 money가 cola_price 보다 크거나 같다"이며, 변수에 저장된 money는 500이므로 0보다 크다는 조건에 참이 된다. 하지만 money는 cola_price보다 작다. 그러므로 "money는 cola_price보다 크거나 같다"는 거짓이 된다.

이 조건문에는 두개의 조건이 "and"로 연결되어 있다. and는 앞 뒤에 오는 조건 모두가 참이어야만 전체 조건이 참이 된다. 

따라서 이 조건문은 두 조건중에서 하나는 참이고 하나는 거짓이므로 전체 조건은 거짓이 된다. 따라서 문장2가 실행된다.

문장1

 

        print("콜라를 산다.")

문장1에 해당하는 구문이다.

가지고 있는 돈이 0보다 크며, 콜라 가격보다 많다면 이 문장이 실행 될 것이다.

문장2

   

    if money >= milk_price:
        print("우유를 산다")
    else:
        print("콜라도 우유도 살수 없다")

문장2 구문이다.

문장2는 자체적으로 또 다른 조건문이다.

money가 우유 가격보다 많다면 우유를 살 것이고, 우유가격보다 적다면, 우유를 사지 못한다.

 

코드의 money 변수 값을 변경해가면서 결과를 테스트 해 본다.

 

 

1269732368_1557215839.8856.png

 

 

두 번째 예제 코드에서 money > 0 and money >= cola_price 라는 조건이 있었다. 두 개의 조건문을 "and"로 연결했다. and는 앞 뒤의 조건을 모두 살펴보아 모두 참일 경우에 전체의 조건을 참으로 판단하는 논리 연산자(and, or, not)이다.

 

논리연산자는 아래의 표와 같이 해석한다.

 

논리 연산자 (Logical Operators):

a = True, b = False 이라 가정한다.

연산자

설명

예제

and

논리 AND 연산. 둘다 참일때만 참

(a and b) = False

or

논리 OR 연산. 둘 중 하나만 참이여도 참

(a or b) = True

not

논리 NOT 연산. 논리 상태를 반전

not(a and b) = True

 

 

파이썬에서 사용하는 다른 형태의 조건문 - 멤버 연산자

in

not in

x in 리스트

x not in 리스트

x in 튜플

x not in 튜플

x in 문자열

x not in 문자열

 

※ 뿐만 아니라 조건문에는 참과 거짓을 판별하는 연산자라면 무엇이든지 사용할 수 있다.

관련 연산자는 연산자 종류에서 확인한다.

 

 

다양한 조건을 판단하는 elif

 

조건이 복잡해질 때는 if와 else만으로는 다양한 조건을 판단하기 어렵다. 다음의 예를 보자.

 

주머니를 확인한다. 돈이 있으면 콜라를 산다. 돈이 없더라도 카드가 있으면 콜라를 산다. 돈도 카드도 없으면 물을 마신다.

 

이를 코드로 작성해보자.

 

소스

pocket= ['ID', 'cellphone', 'pen']
card = True

 

if 'money' in pocket:
    print("현금으로 콜라를 산다.")
elif card:
    print("카드로 콜라를 산다.")
else:
    print("물을 마신다.")

카드로 콜라를 산다.

조건문 다음에 콜론(:)이 들어가야 한다.

 

소스 분석

pocket= ['ID', 'cellphone', 'pen']
card = True

변수이다.

pocket은 리스트이며, 'ID', 'cellphone', 'pen'이 들어있다.

card는 True이며 이는 카드를 가지고 있다고 해석한다.

if 'money' in pocket:

    문장1

elif card:

    문장2

else:

    문장3

 

if 조건문이다.

 

'money' in pocket이 조건이 된다. 

pocket이라는 리스트에는 'money'가 없다. 따라서 이 조건은 거짓이 된다.

 

다음 조건을 본다. elif는 else 와 if 가 합쳐졌다고 보면 된다.

다음 조건은 card 이다. card = True이다. 따라서 이 조건은 참이다.

문장2가 실행된다.

 

만약 money가 pocket에 없고, card도 False라면 문장3이 실행 될 것이다.

코드의 변수 값을 변경해가면서 결과를 테스트 해 본다.

 

 

1269732368_1557215847.7362.png

 

 

이와 같이 조건이 다양해질때, if, elif, else를 사용하여 조건을 충족 시킬 수 있다. elif는 제한없이 사용할 수 있다.

 

if 조건문:

    문장1

    문장2

    ...

elif 조건문:

    문장1

    문장2

    ...

elif 조건문:

    문장1

    문장2

    ...

else:

    문장1

    문장2

 

댓글목록 sfs

총 30 건 , 1 페이지
게시물 검색
파이썬 기초 목록
번호 제목 글쓴이 조회 날짜
1 관리자 40797 05-07
2 관리자 40446 05-28
3 관리자 36739 05-02
4 관리자 35794 05-07
5 관리자 33390 05-02
6 관리자 33381 06-04
7 관리자 33335 05-02
8 관리자 32621 06-11
9 관리자 32146 05-02
10 관리자 31655 06-12
11 관리자 31301 05-02
12 관리자 30926 05-28
13 관리자 30792 05-06
14 관리자 30748 05-07
15 관리자 30718 05-07
16 관리자 30517 05-28
17 관리자 30482 12-21
18 관리자 30076 05-02
19 관리자 28086 05-02
20 관리자 27584 05-02
21 관리자 27370 05-02
22 관리자 26699 05-02
23 관리자 26385 05-02
24 관리자 26120 05-02
25 관리자 25200 05-06
26 관리자 24160 12-25
27 관리자 23314 05-02
열람중 관리자 23119 05-07
29 관리자 22705 05-06
30 관리자 22015 05-06
GNUBOARD_M
Copyright © JBMPA.com All rights reserved.