-
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:를 반복해야 한다. 불필요한 코드가 반복되면 구조가 나빠져 수정하기 번거로워진다. 짧으면서 읽기 쉬운 코드 작성에 노력하기.