본문 바로가기
파이썬/Basics(기초)

[Python] 10. 불(Bool), 조건문(if, elif, else)

by 쿠킷리스트 2021. 10. 6.

학습내용

#1 : 불(bool)자료형이란?
#2 : 자료형의 참과 거짓
#3 : if문이란?
#4 : 조건문(conditional statement) 연산자
#5 : 다양한 조건을 판단하는 elif
#6 : if문을 한 줄로 작성하기(조건부 표현식)
#7 : 예제와 함께 복습

#1 : 불(bool)자료형이란?

 불(bool) 자료형은 참(True)과 거짓(False)을 나타내는 자료형으로 참(True)과 거짓(False) 값만 가진다. 파이썬에서 True, False의 첫 문자를 항상 대문자로 사용해야한다.

a = True
b = False
type(a)
#bool
type(b)
#bool
  • type()을 사용하면 bool(boolean) 타입이라 나온다.
1 == 1
#True
2 > 1
#True
2 < 1
#Flase
  • 불 자료형은 조건문의 반환 값으로도 사용된다.

#2 : 자료형의 참과 거짓

 대부분의 언어는 0은 거짓이고 이외는 참이다. 파이썬은 이 컨셉을 따라갔으며 더 확장했다.

값  True or Flase 값  True or Flase
"koo" Ture { } Flase
" " Flase 1 Ture
[1, 2, 3] Ture 0 Flase
[ ] Flase None Flase
( ) Flase  
  • 문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면 (" ", [ ], ( ), { }) 거짓이 되고, 값이 있는 경우 참이 된다. 숫자에서는 값이 0일 때 거짓이 된다.

조건문에서 bool

#bool 활용 예시
a = [1,2,3,4,5]
while a:
    print(a.pop())
# 5
# 4
# 3
# 2
# 1
while 조건문:
    수행할 문장
  • while은 조건문이 참일 때까지만 반복하는 것.
  • 조건문이 참인 동안만 조건문 안에 있는 문장을 반복해서 수행.
if []:
    print("True")
else:
    print("False")
#False

if [0,1,2,3,4]:
    print("True")
else:
    print("False")
#True
  • if 다음 조건이 참이면 if 다음 문장을 실행, 거짓이라면 else를 실행.
  • 비어있는 리스트는 False 반환, 값이 들어있는 리스트는 True 반환.

불 연산(bool)

bool('koo')
#True
bool('')
#False
bool(0)
#False
  • bool 내장 함수를 사용해 자료형의 참과 거짓을 식별할 수 있다.

#3 : if문이란

 if문은 프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행하는데 사용.

sleep = True
if sleep:
    print("알람을 울려라.")
else:
    print("깨어 있다.")
#알람을 울려라.
  • sleep은 True를 반환하기에 알람을 울려라.가 출력된다.

if문 기본 구조

if 조건문:
    수행할 문장1
    수행할 문장2
    ...
else:
    수행할 문장1
    수행할 문장2
    ...
  • 조건문을 테스트해서 참이면 if문 바로 다음 문장들을 수행하고, 거짓이면 else문 다음 문장들을 수행한다.

#4 : 조건문(conditional statement) 연산자

 '조건문'이란 참과 거짓을 판단하는 문장. 조건문에는 비교연산자가 가장 많이 사용된다.

비교연산자 설명 비교연산자 설명
x < y x가 y보다 작다 x > y x가 y보다 크다
x == y x와 y가 같다 x != y x와 y가 같지 않다
x >= y x가 y보다 크거나 같다 x <= y x가 y보다 작거나 같다
x = 5
y = 7

x > 7 #False
x == y #False
x != y #True

1) 조건문 사용 예시

sleep = 70
if sleep >= 80:
    print("알람을 울려라.")
else:
    print("깨어 있다.")
#깨어 있다.
  • sleep이 70이기에 False를 반환하고 따라서 else의 "깨어 있다."가 출력된다.

2) and, or, not 연산자

 and, or, not 조건을 판단하기 위해 사용하는 연산자로 and, or, not이 있다.

연산자 설명
x or y x와 y 둘 중에 하나만 참이어도 된다. (또는) (둘 중 하나만 참)
x and y x와 y 모두 참이다. (그리고) (둘 다 참)
not x x가 거짓이면 참이다.
money = 5000
card = True
if money >= 10000 or card:
    print("택시를 타고 가라")
else:
    print("버스를 타고 가라")
#택시를 타고 가라
  • 10000은 False이지만 card가 True이기에 "택시를 타고 가라"가 출력됨.

3) x in s, x not in s 

in not in
x in 리스트 x not in 리스트
x in 튜플 x not in 튜플
x in 문자열 x not in 문자열
1 in [1,2,3,4,5]
#True
1 not in [1,2,3,4,5]
#False
  • 1이 리스트 [1,2,3,4,5]안에 들어있기에 in은 True를, not int은 False를 반환한다.
'a' in ('a','b','c')
#True
'B' in 'Big data python'
#True
'b' in 'Big data python'
#False
  • 문자열의 경우 대소문자를 구분해야한다.
blog = ['koo', 'data', 'python', 'math']
if 'math' in blog:
    print("열공하자")
else:
    print("수학도 해야지")
#열공하자
  • 리스트도 사용이 가능하다.

조건문에서 아무 일도 하지 않게 설정하기

 조건문의 참, 거짓에 따라 실행할 행동을 정의할 때 pass를 사용하면 아무런 일도 하지 않도록 설정할 수 있다.

blog = ['koo', 'data', 'python', 'math']
if 'math' in blog:
    pass
else:
    print("수학도 해야지")
  • pass를 사용하면 아무것도 반환되지 않고, 출력되지 않는다.

#5 : 다양한 조건을 판단하는 elif

 세 가지 이상의 조건을 판단하고자 할 때 elif를 사용한다.

wallet = ['coin', 'cash', 'picture']
card = True
if 'money' in wallet:
    print('버스를 타고 가라')
elif card:
    print('택시를 타고 가라')
else:
    print('걸어가라')
#시를 타고 가라
  • wallet 안에 money가 있으면 '버스를 타고 가라', 없다면 card가 있는지(True 인지) 확인.
  • card가 있다면(True 라면) '택시를 타고 가라', 없다면 '걸어가라'
  • elif는 이전 조건문이 거짓일 때 수행되며, 무한히 늘릴 수 있다.
  • if부터 위에서부터 순서대로 참인지 거짓인지 확인을 하고 참을 만나면 해당 명령문을 수행하고 if문을 탈출.

#6 : if문을 한 줄로 작성하기(조건부 표현식)

1) if문을 한 줄로 작성하기

wallet = ['coin', 'cash', 'picture']
#4줄짜리 코드
if 'cash' in wallet:
    pass
else:
    print("카드로 결제하기")

#1줄짜리 코드
if 'cash' in wallet: pass
else: print("카드로 결제하기")
  • 수행할 문장이 한 줄일 때 if문을 한 줄로 작성할 수 있다.

2) 조건부 표현식

score = 95
#5줄 짜리 코드
if score >= 80:
     grade = 'pass'
else:
    grade = 'fail'
print(grade)

#2줄 짜리 코드
grade = 'pass' if score >= 80 else 'fail'
print(grade)
  • if 좌측에 (참일 때 실행되는 조건문)을, if 우측에 (거짓일 때 실행되는 조건문)을 배치.
  • (grade = 'pass') (if score >= 80) (else 'fail')

#7 : 예제와 함께 복습

a = {1:"1", 2:"2"}
print(a.get(3))
#None
print(bool(a.get(3)))
#False
  • key 값이 3인 요소는 없기에 None 값이 반환되고, 이를 bool로 판별하면 False가 나온다.
a = [0,1,2,3,4]
while a:
    print(a.pop())
# 4
# 3
# 2
# 1
# 0

a = [0,1,2,3,4]
while a:
    a.pop()
    print(a)
# [0, 1, 2, 3]
# [0, 1, 2]
# [0, 1]
# [0]
# []
  • a가 비어있는 리스트가 되어 False 값을 반환할 때까지 pop을 통해 마지막 요소를 반환하고 제거.
score = 80
major = "Arts"
area = "seoul"

if score >=80 and major == 'Arts' or area == 'seoul':
    print('pass')
else:
    print('false')
#pass
    
score = 80
major = "Arts"
area = "seoul"

if score >=80 and major == 'math':
    print('pass')
elif area == "seoul":
    print('retry')
else:
    print('false')
#retry
  • and, or, elif 등으로 정말 다양한 분기점을 만들어 낼 수 있다.

느낀 점

 활용도가 정말 무궁무진 할텐데 아직 내가 너무 부족해서 답답하다. 조건문은 프로그래밍의 꽃이 아닐까?

댓글