Python

05. 조건문

til_t 2021. 1. 20. 16:15

5.1 if 조건문

  • if문 (true이면)

프로그램의 실행 흐름을 통제하는 문장을 제어문이라고 한다. 조건문은 조건의 진위 여부에 따라 명령의 실행 여부를 결정하는 제어문이다.

if 조건:
    명령

변수는 언제든지 바뀔 수 있는 값이며 어떤 값이 입력될지 미리 알 수 없기 때문에 실행 중에 값을 점검하는 조건문이 필요하다.

조건문 뒤에는 반드시 콜론(:)을 붙이고, 명령문 앞쪽은 들여쓴다.

  • 비교 연산자
2 < 10
"2" > "10" -> "2"와 "1"을 먼저 비교하기 때문

대입 연산자(=)와 비교 연산자(==) 구분.

컴퓨터는 숫자 즉, 문자열(문자코드)를 처음부터 0이 아닐 때까지(끝까지) 빼본 뒤 비교한다. 그렇기 때문에 비교 시 대소문자를 구분한다.

ASKII 코드 대문자가 앞, 소문자가 뒤.

타입 거짓
숫자 0이 아닌 숫자 0
문자열 비어 있지 않은 상태 ""
리스트, 튜플, 딕셔너리 비어 있지 않은 상태 빈 상태 -> [], (), False, None

ex) bool([]) -> False 리턴

다른 언어와 다르게 숫자 -1도 참으로 평가된다.

  • 논리 연산자

두 개 이상의 조건을 한꺼번에 점검할 때 논리 연산자를 사용한다.

연산자 설명
and 두 조건이 모두 참이면 참이다
or 두 조건 중 하나라도 참이면 참이다
not 조건을 반대로 뒤집는다
F and X 
T or X 
# 두 연산 모두 뒤를 실행하지 않아도 답이 나온다.
a = 3
if a > 1 and a < 10:  # 괄호로 묶어도 되고 묶지 않아도 상관없다.
    print("ok")

if 1 < a < 10:      # 파이썬에서만 이런 표현 가능.
    print("ok2")

5.2 블록 구조

  • 블록 구조

if문에 걸리는 명령은 들여쓰기 수준이 같아야 한다.

age = 16
if age < 19:
    print("청소년")
    print("화이팅")

if age < 19:
    print("청소년2")
print("화이팅2") # if문과 상관 X
  • else문 (if문에서 조건이 False인 경우)
if 조건:
    명령1
else:
    명령2

else 다음에도 콜론이 있음을 주의해야 한다. 조건이 참이면 명령1을 실행하고 거짓이면 명령2를 실행한다.

if와 else는 짝을 이루기 때문에 if가 없는 else문은 에러가 난다.

  • elif문
if 조건1: # 조건1 True
    명령1 
elif 조건2: # 조건1 False, 조건2 True
    명령2
else:        # 조건1, 조건2 False
    명령3
  • if문 중첩

똑같은 종류의 명령끼리 겹치는 현상을 중첩(Nesting)이라고 한다.

man = True
age = 22

if man == True:
    if age >= 19:
        print("성인 남자")

조건을 연속적으로 점검하여 두 조건이 모두 참일 때만 print문을 실행한다. if문끼리 중첩되면 두 조건이 모두 참일 때만 명령을 실행하는데 and 논리 연산자로도 비슷한 효과를 낼 수 있다.

동시에 점검할 때는 and 논리 연산자가 편하지만 한쪽 if문에 else절이 있거나 추가적인 다른 조건을 더 점검할 때는 if문을 중첩시켜야 한다.

man = True
age = 10

if man == True:
    if age >= 19:
        print("성인 남자")
    else:
        print("소년")

and를 사용하면 if man == True:를 반복해야 한다. 불필요한 코드가 반복되면 구조가 나빠져 수정하기 번거로워진다. 짧으면서 읽기 쉬운 코드 작성에 노력하기.