python/파이썬 기본

5. 조건문 (if, elif, else)

Abokadoh 2023. 2. 11. 21:05

1. codition (조건문) 기본

  • 특정 조건을 만족하는 경우에나 수행할 작업이 있는 경우 사용
  • 모든 조건은 boolean으로 표현 된다.(예외 사항은 아래에서 살펴보자.)
  • if, elif, else 키워드가 사용됨
  • 조건문의 경우 if, elif, else 블록에 종속된 코드들여쓰기로 표현 가능하다.
  • 즉 아래코드에서와 같이, 조건문 아래에 들여쓰기된 2줄의 코드만이 조건문의 조건에 따라 수행될 수도, 수행되지 않을 수도 있는 코드라고 할 수 있음.
# <in>
if 6 >= 5:
    print('6 is greater than 5')
    print('Yeah, it is true')
print('This code is not belongs to if statements')


# <out>
6 is greater than 5
Yeah, it is true
This code is not belongs to if statements
Logical AND, OR, NOT
  • 조건문에 사용되는 조건의 경우, boolean이기 때문에 논리식 AND, OR, NOT이 사용가능하다.
  • AND : and
  • OR : or
  • NOT : not
우선순위
  • NOT > AND > OR
if의 조건이 bool이 아닌 경우
  • 일반적으로 조건문에는 bool이 주로 위치한다.
  • 하지만 정수, 실수, 문자열 리스트기본 타입도 조건에 사용 가능
  • False로 간주되는 값 (각 type의 default값)
    • None
    • 0
    • 0.0
    • ‘’
    • [ ] →  빈 리스트
    • () → 빈 튜플
    • {}  → 빈 딕셔너리
    • set() → 빈 집합
  • 그 밖에는 모두 Ture로 간주한다.
# <in>
a = []
if a:
    print('print')

a = [1]
if a:
    print('print')


# <out>
print

2. else 사용

  • if가 아닌 경우, 나머지 조건을 표현하고 싶다면 바로 아래 else 블록을 사용한다.
  • 이 경우, if조건이 True인 경우, if 블록의 코드가 수행, 거짓인 경우 else 블록의 코드가 수행된다.
💡 주의 할 점 : if와 else사이에 다른 코드 삽입은 불가능.
# 짝수인 경우에는 2로 나눈 값을 출력하고
# 홀수인 경우에는 1을 더한 값을 출력해라

# <in>
a = 12
if a % 2 ==0: # 짝수인지 판별
    print(a / 2)
else:
    print(a + 1)


# <out>
6.0

3. 조건이 여러개인 조건문 만들기 elif

  • 조건이 여러개인 경우, 다음 조건을 elif 블록에 명시 가능
  • 이 경우, 각 조건을 확인 후, True인 조건의 코드 블락을 실행한 후, 전체 if, elif, else구문을 종료
  • 조건문을 사용할 때에는 if 이후, 0개 이상의 elif를 사용 가능하며, 0개 또는 1개의 else를 사용 가능하다.
# <in>
a = 17
if a % 4 == 0:
    print('a is divisible by 4')
elif a % 4 == 1:
    print('a % 4 is 1')
elif a % 4 == 2:
    print('a % 4 is 2')
else:
    print('a % 4 is 3')


# <out>
a % 4 is 1

4. 중첩 조건문(nested condition)

  • 조건문의 경우 중첩하여 작성이 가능하다.
  • 중첩의 의미는 depth(깊이)로 생각할 수 있으며, depth의 제한은 없다.
# <in>
a = 10
b = 9
c = 8

if a == 10:
    if c == 8:
        if b == 8:
        	print('a is ten and b is 8')
        else:
            print('a is ten b is not 8')


# <out>
a is ten b is not 8