티스토리 뷰

python lecture/basic

[edu] if문 (조건문)

burningrizen 2019. 1. 30. 17:21

[compare]


값이나 변수들을 비교할 수 있는 연산자에 대해 알아보자


A > B

A가 B 보다 크다

A >= B 

A 가 B 크거나 같다

A < B

A 가 B 보다 작다

A <= B

A 가 B 보다 작거나 같다

A == B

A 와 B 가 같다

A != B

A 와 B 가 다르다


비교 연산자를 이용한 논리가 참일 때는


결과가 True 가 되고

닐때는 False 가 된다.


이것의 타입은 bool 과 같다.



[syntax]


n = 10
if n < 20:
print("condition is true")


조건문의 기본 문법은 위와 같다.


if 다음에 논리가 위치하고 : 이 다음에 위치한다.


여기서 논리식은 연산이 되서 True, False 둘중에 하나가 되고


True 이면 if 아래 들여쓰기 되있는 모든 코드를 실행한다.


if 다음에 논리식 대신에 bool 변수가 위치 할수도 있다.



[indent:들여쓰기]


print 부터 위에 대비해서 들여 쓰기가 되었다.


if 문이 들여쓰기가 없는 level 0 의 상태라면


그 아래는 들여쓰기가 한번 되있는 level 1 의 상태이다


바로 위 level 0 의 if 문에 종속적이고 포함된 상태이다. 



[else]


n = 10
if n < 20:
print("condition is true")
else:
print("condition is false")


if 는 조건이 참(True) 일때 실행되는 코드를 들여쓰기안에 위치 시켰다.


else 문 아래 들여쓰기된 코드들은 if 조건이 거짓일때 실행된다.


if else 문에서는 해당 논리가 참/거짓일 때 각각 실행되므로


둘중에 하나만 반드시 실행된다.


두개다 실행되거나 둘다 안되거나 하는 경우는 존재하지 않는다.



[elif]


만약에 양수 음수 0 을 구분하는 조건문을 만들려면 어떻게 해야 될까?


n = 1
if n > 0:
print("+")
else:
if n == 0:
print("0")
else:
print("-")


if else 만으로는 위와 같이 할수가 있다.


들여쓰기도 level 2 까지 되어 있고 복잡도가 많이 올라가 있다.


n = 1
if n > 0:
print("+")
elif n == 0:
print("0")
else:
print("-")


else if 를  쓰지 말고 elif 를 써서 조건을 바로 명시해 주자


양수가 아닌것중에 0과 동일한것 이라는 조건이 된다.


마지막 else 는 위에 모든 조건일 아닐때 라는 뜻이 된다


이 경우도 3개중에 반드시 1개는 분기된다.



[bool]


age = 10
if age > 20:
print("adult")
else:
print("kids")


여기서 조건식을 bool 변수로 대체해 보자


age = 10
is_adult = age > 20
if is_adult:
print("adult")
else:
print("kids")


이렇게 논리를 미리 계산해서 bool 타입의 변수에 저장해 놓을 수 있다.


이러면 조건식이 복잡해 질때 전체 조건문이 어떤 기능을 하는지 쉽게 알아 볼수 있다.


그리고 조건별로 정리가 되는 장점도 있다.



[and, or]


조건식에 다중 조건을 한번에 위치 시키는 방법을 알아보자


a and b


a 조건 b 조건 모두 참일때 만 참이 된다.


하나라도 거짓이 있을 때는 거짓이다


a or b


둘중에 하나라도 참일때는 참이다


둘다 거짓일 때 만 거짓이다.


a, b 위치에는 논리식이 위치할 수도 있고 


bool 타입 변수가 위치 할수도 있다.


논리식이 위치할 수 있는 모든곳에는 bool 변수가 위치할 수 있다. 


a = 10 < 20
b = 0 < 1
if a and b:
print("true")
else:
print("false")



[performance]


if a and b and c:
print("true")
else:
print("false")


2개 이상의 조건을 위치 시켜야 하는 경우가 있다.

이럴때는 조건을 어떤 순서대로 위치 시켜야 하는가?


and 로 되어 있을때는 거짓일 가능성이 높은 조건을 앞에 배치한다.


and 로 이루어저 있으면 하나라도 거짓이면 뒤에 조건 여부에 상관없이


거짓이기 때문에 뒤에 조건을 검사하지 않는다.


or 인 경우에는 반대로 참일 가능성이 높은 조건을 앞에 배치 한다.



[3항연산자]


조건문을 한줄에 표현할 수 있다.


age = 30
state = "adult" if age > 20 else "kids"


if 앞에는 조건이 참일때 state 에 "adult" 가 대입되고


거짓일 때는 "kids" 가 대입된다.








댓글