5 Condition 23 Lms

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 44

5.

조건문
(1) 비교 · 논리 연산자

Based on Python4Everybody, Think PythonX 알고리즘 , 모두의 파이썬 , 파이썬 코딩 도장 등


1
불 (Boolean) 과 비교∙논리 연산자
조건 부분 값을 계산하기 위해 , 필요한 데이터 종류 (type) 와 연산자
불 (Boolean) data type
True/False 값을 갖는다 : 1, 3.6, 'Python' 처럼 값 (Value) 의 일종으로 binary value

비교 연산자와 논리 연산자의 판단 결과는 Boolean 데이터 타입


비교 결과가 맞으면 True, 아니면 False

부등호 > 로 두 숫자를 비교함


3 이 1 보다 크니까 결과는 참이고 True 가 나옴

2
불과 비교 연산자 사용하기
숫자 값이 같은지 다른지 비교하기
같은지를 비교하는 연산자 : == (equal)
다른지를 비교하는 연산자 : != (not equal)

10 과 10 은 같으므로 True, 10 과 5 는 다르므로 True 가 나옴

파이썬에서 두 값이 같은지 비교할 때는 = 이 아닌 == 을 사용


= 은 대입 연산자 (assignment) 로 이미 사용 중
다른 프로그래밍언어에서는 assignment 연산자로 , “=“ 대신 “ <-”, “:=“ 등 사용

3
불과 비교 연산자 사용하기
문자열도 == 와 != 연산자로 비교 가능
문자열은 비교할 때 대소문자를 구분
단어가 같아도 대소문자가 다르면 다른 문자열로 판단

4
불과 비교 연산자 사용하기
부등호 사용하기
큰지 , 작은지 , 크거나 같은지 , 작거나 같은지를 판단

>, < 은 비교할 값과 같으면 무조건 거짓


>=, <= 은 비교할 값과 같으면 참 ( 비교할 값도 포함된다는 점을 조심 )

5
불과 비교 연산자 사용하기
객체 비교 : is & is not
==, != 는 값 자체를 비교
is, is not 은 객체 ( 메모리주소가 가리키는 데이터 , object) 를 비교하므로 , type 이 다르면 False

값 ( 숫자 ) 을 비교할 때는 is 가 아닌 ==, != 등과 같은 비교 연산자를 사용

6
논리 연산자 사용하기
and, or, not
and : 두 값이 모두 True 일 때만 True

or : 두 값 중 하나라도 True 면 True

7
논리 연산자 사용하기
not : 현재의 논리값을 거꾸로 하여 , not True→False, not False→True

not 연산자는 and/or 연산자보다 연산에서 우선순위를 갖는다

and 연산자는 첫 번째 값이 거짓이면 두 번째 값은 확인하지 않고 False


or 연산자는 첫 번째 값이 참이면 두 번째 값은 확인하지 않고 True

8
논리 연산자 사용하기

과정

이 식을 괄호로 표현하면 다음과 같은 모양이 됨

헷갈릴 때는 괄호로 판단 순서를 명확히

9
논리 연산자 사용하기
논리 연산자와 비교 연산자를 함께 사용하기

비교 연산자로 비교한 결과를 논리 연산자로 다시 판단


비교 연산자 (is, is not, ==, !=, <, >, <=, >=) 를 먼저 판단하고 논리 연산자 (not, and, or) 를 판단하게 됨

10
bool() 연산자로 type 변환
정수 , 실수 , 문자열을 불로 만들기 : bool() 사용
정수 0, 실수 0.0 외의 모든 숫자는 True
빈 문자열 ‘’” , ‘’ 를 제외한 모든 문자열은 True
문자열의 내용 자체는 판단하지 않으며 값이 있으면 True
None 은 False
None 의 type 은 NoneType

만약 문자열의 내용이 'False’ 라도 Bool(‘False’)=True 임

11
(2) 조건문 : if

Based on Python4Everybody, Think PythonX 알고리즘 , 모두의 파이썬 , 파이썬 코딩 도장 등


가장 기본적 조건문 형태
특정 조건을 만족할 때 해당하는 코드를 실행하기
우리 생활 속 다양한 조건문 사례가 존재
세탁기에 빨래를 넣고 돌릴 때 ?

아침에 날씨를 보고 하는 행동 ?

조건을 만족하는지 여부에 따라 우리는 다른 행동을 선택하여 실행한다


-> 프로그램도 동일하게 할 수 있도록 프로그래밍 언어에서 조건문 구조를 제공

13
순서도로 보는 기본 if 조건문
▼ 실행 흐름 : 조건을 만족하면 바로 밑의 종속 코드블록을 실행하고 ,
아니면 ( 조건을 만족하지 않으면 ) 종속 코드블록을 skip ( 다음 명령어로 )

14
기본 if 조건문 사용
if 예약어 뒤에 조건식을 지정하고 , :( 콜론 ) 을 붙이고 , 다음 줄에 실행 코드
실행할 코드 블록은 존재해야 하며 반드시 들여쓰기를 해야 함

if- 블록

인터프리터 셸에서 if 조건문 작성

if- 블록

만약 if 조건에 따라 수행하는 코드 블록을 들여쓰기 하지 않으면 들여쓰기 에러가 발생

15
기본 if 조건문 형태

조건식이 만족할 때 실행할 코드를 if- 본문 (if-body) 이라고도 부름

16
if 조건문 사용시 주의점
= 은 할당 (assignment), == 은 비교 (comparison)
if 에 = 을 사용하면 문법 에러가 발생함

17
if 조건문 사용시 주의점
조건식 끝에는 꼭 “ :” 이 와야 함
Python interpreter(SW) 가 구조 파악 가능

18
if 조건문 사용시 주의점
들여쓰기를 정확히 지켜야 함
파이썬에게는 들여쓰기가 문법
Python scanner 가 구조 파악 가능

19
if 조건문과 들여쓰기
수정 코드 1

20
if 조건문과 들여쓰기
앞의 결과와 동일한 , 그러나 다른 수정코드 2
첫 번째 print 만 들여쓰기를 하고 , 두 번째 print 는 들여쓰기를 하지 않으면 ?

21
if 조건문과 들여쓰기
그러나 , 이전 코드에서 x = 5 라면 ?

Tip: 관련된 문단 (body) 과 문단 사이에는 빈 줄 추가하기

22
조건문의 실행코드 생략 : pass
if 조건문에서 코드를 생략하기

if 다음 줄에 pass 라는 특별한 키워드를 넣었음


pass 는 아무 일도 하지 않고 그냥 넘어간다는 뜻

초기 개발단계에서 pass 라 적고 , 나중에 할 일은 주석으로 남겨놓는 방식 사용

23
중첩 if 조건문
여러 번 비교 가능 ? 가능
종속 코드 블록 안에 새로운 if 조건문 사용 가능
같은 수준의 여러 개 if 조건문 사용 혹은 연속적 중첩형 if 조건문 사용 가능

( 예시 ) 변수의 값이 10 이상이면 '10 이상입니다 .' 를 출력한 뒤 15 이면 '15 입니다 .', 20 이면 '20 입니다 .' 를
출력

24
입력값과 if 조건문
변수에 사용자가 입력한 값을 저장하고 if 조건문 사용

스크립트 파일을 실행한 뒤 10 을 입력하면 ?

25
else: 두 방향으로 분기

Based on Python4Everybody, Think PythonX 알고리즘 , 모두의 파이썬 , 파이썬 코딩 도장 등


if ~ else 문 : 두 방향으로 분기
If ~ else~ 조건문은 분기 (branch) 를 위한 문법
분기는 " 둘 이상으로 갈라지다 " 라는 뜻
프로그램의 분기는 프로그램의 제어 흐름 (control flow) 을 둘 이상으로 나누는 것
제어 흐름은 순서도의 화살표라고 생각해도 무방

조건문이 만족할 때와 만족하지 않을 때 각각 다른 코드 실행


프로그램이 두 방향 중 한쪽으로 분기 실행 : 두 방향 다 갈 수 없다
실생활에서 전화가 왔을 때

27
else 의 사용방법
else 는 if 와 함께 사용 – 단독 사용 불가
if 와 같은 표현 형식 : else 도 “ :”( 콜론 ) 을 붙이고 다음 줄에 실행할 종속 코드블록 위치
else 뒤에는 조건식이 없으나 , if 뒤의 조건식 앞에 “ not” 을 붙인 것과 같은 효과

들여쓰기를 맞춰서 코드를 입력 ( 파이썬 셸에서도 )

28
if 와 else 의 기본 형태와 실행 흐름
else 는 if 의 조건식이 만족하지 않을 때 else: 이후 종속코드블록을 실행
x 에 5 가 들어있어서 x == 10 을 만족하지 않으므로 else 의 print 가 실행되어 '10 이 아닙니다 .' 가 출력됨

▼ if 와 else

29
if 와 else 의 기본 형태와 실행 흐름
조건식이 참 (True) 이면 if 의 종속 코드블록 (if 본문 ) 가 실행되고 ,
거짓 (False) 이면 else 의 종속 코드블록 (else 본문 ) 가 실행

30
else 와 들여쓰기
else 는 if 와 들여쓰기 규칙이 같음

else 도 코드가 여러 줄일 때는 들여쓰기 깊이가 같게

31
else 와 들여쓰기
종속 코드 블록 내 코드가 여러 줄일 때는 들여쓰기에 유의

32
if 조건문의 동작 방식
조건식이 아닌 값일 때

True 는 if 의 코드가 실행되고 , False 는 else 의 코드가 실행됨


None 은 False 로 취급되므로 else 의 코드가 실행됨

( 참고 ) 변수 값이나 함수의 결과가 None 인 경우가 발생 가능


33
if 조건문에 숫자일 때
숫자는 정수 (2 진수 , 10 진수 , 16 진수 )/ 실수와 관계없이 0 이면 거짓 , 0 이 아니면 참

34
if 조건문에 문자열일 때
문자열은 내용이 있을 때 참 , 빈 문자열은 거짓임

불값 True 와 True 로 취급하는 10 진수 , 16 진수 , 2 진수 , 실수 , 문자열로 if 를 동작시킴


값 자체가 있으면 if 는 동작함
반대로 0, None, '' 은 False 로 취급하므로 else 가 동작함

35
여러 개의 조건식 지정 방법
만약 조건이 복잡할 때는 어떻게 해야 할까 ?
예시 : 인터넷 포털의 중고나라 카페에 글을 올리려면
먼저 포털 사이트의 회원이고 중고나라 카페의 회원이라야 한다 .

이 조건을 if 조건문으로 나타낸다면 ?

36
여러 개의 조건식 지정 방법
if 조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정 가능

x == 10 and y == 20 처럼 “ and 논리 연산자”를 사용하면


x 가 10 이면서 y 가 20 일 때 if 의 코드가 실행
만약 둘 중 하나라도 만족했을 때 ' 참 ' 이 출력되도록 하려면
“or 논리 연산자”를 사용

37
여러 개의 조건식 지정 방법
중첩 if 조건문 : if 를 계속 나열해서 if 중첩 구조로 만듦
예시 : x 가 양수이고 20 보다 작은지 판단하려고 함
조건 1:
조건 2:

중첩 if 조건문은 and 논리 연산자를 사용해서 if 하나로 줄일 수 있음

더 간단하게 ?
프로그래밍 언어마다 다르지만 , python 은 지원

38
elif: 여러 방향으로 분기

Based on Python4Everybody, Think PythonX 알고리즘 , 모두의 파이썬 , 파이썬 코딩 도장 등


elif (==else if): 여러 방향으로 분기
참 / 거짓 외 그 이상 개수의 다양한 상황이 발생
여러 가지 상황을 처리하는 대표적인 예 : 음료수 자판기
자판기 안에는 다양한 종류의 음료수가 들어있고 ,
버튼을 누르면 해당 버튼에 해당하는 음료수가 나옴
콜라를 선택 -> 콜라가 나옴
사이다를 선택 -> 사이다가 나옴
환타를 선택 -> 환타가 나옴

if/elif 로 코드를 만들면

아무 것도 안 내보내거나 , 위 세가지가 아닌 음료수를 내보냄

40
elif 사용하기
if, else 처럼 조건식 끝에 :( 콜론 ) 을 붙임
elif 단독으로 사용 불가
if 조건식 1:
if 조건식 1:
코드 1
코드 1
else:
elif 조건식 2: # 조건식 1 의 결과값은 False
if 조건식 :
코드 2
코드 2

들여쓰기를 맞춰야 함

41
if, elif, else 가 있는 조건문
if 조건식 1:
코드 1
elif 조건식 2: # 조건식 1 의 결과값은 False
코드 2
else: # 조건식 1 과 조건식 2 의 결과값 모두 False
코드 3

사용 예제

42
if, elif, else 사용 : 음료수 자판기
해당 음료수 자판기에서는 콜라 , 사이다 , 환타를 판다 .
1 번은 '콜라' , 2 번은 '사이다' , 3 번은 '환타‘
프로그램에서 음료수 선택은 해당 번호를 입력하고 해당하는 음료수 이름을 출력
1, 2, 3 이외의 숫자는 '제공하지 않는 메뉴'임을 출력

43
Python 에서 조건문 표현의 유의사항
if 예약어를 사용하는 기본 if 조건문
if 부분은 꼭 있어야 한다
elif 와 else 는 선택적 사용으로 , if 와 꼭 함께 사용된다
같은 수준의 if, elif, else 는 동일한 스페이스만큼 들여쓰기를 한다 .

if, elif, else 는 사용시 , 종속 코드블록이 꼭 필요하다 .


실질적 실행 코드가 없다면 “ pass” 예약어 사용
종속 코드 블록은 들여쓰기를 잘 해야 한다 .
종속 코드 블록 내 코드들의 들여쓰기에 유의하자 . 에러나기 좋다 .

종속 코드 블록에서는 반복적으로 if, elif, else 사용 가능 ( 중첩형 구조 )


대신 들여쓰기를 잘 해야한다 .

44

You might also like