python에도 if문이라고 부르는 if statement가 존재하고, 특정한 조건을 확인 할 때 사용한다.
python if문의 자세한 구조는 다음과 같다.
if expression: codes to execute ```
expression 뒤에 오는 값이 True이면 출력하고 Fasle이면 실행되지 않는 구조이다.
또한 전 시간에 살펴보았던 들여쓰기의 중요성을 다시 한 번 느낄 수 있는데,
if condition: print("if statement code 1") print("if statement code 2") print("Not if statemet code")```
다음과 같이 code1,2의 print는 if문 안에서 들여쓰기 되어있으므로 if문과 연결되어 있는 코드이다(condition변수가 True이면 실행됨). code3 의 출력문은 if문과 동일한 간격 선상에 있으므로 독립적인 구문이다(condition변수와 상관없이 실행됨).
python에서는 논리 연산자가 존재하는데 대표적으로 and, or, not이 있다. 다음 표를 통해 살펴보자.
논리연산자 | 문법 | 설명 |
---|---|---|
and | a and b | AND(논리곱), 양쪽 모두 참일때 참 |
or | a or b | OR(논리합), 양쪽 중 한 쪽만 참이라도 참 |
not | not x | NOT(논리부정), 참과 거짓을 뒤집음 |
※ 식 하나에 and, or, not이 모두 있으면 not, and, or 순으로 된다.
다음 예제를 통해 자세히 살펴보자.
is_odd_and_greater_than_twenty 함수를 작성하세요.
다음과 같은 문제가 주어졌을때 우리는 두가지 방법으로 해결할 수 있다. 위에서 살펴본 and 연산자를 사용하거나 if문을 중첩하는 방법인데, 지금은 and 연산자를 이용해 문제를 해결하겠다.
def is_odd_and_greater_than_twenty(num): if num % 2 == 1 and num > 20: return True else: return False
위의 코드와 같이 num을 2로 나눠 나머지가 1이 나옴과 동시에 20보다 큰 경우엔 True를 반환해주는 식이다.
위에서 살펴본 if문은 딱 하나의 condition 만 판단하는 간단한 구조였다. 하지만 python에서는 더 복잡한 경우가 있을 수 도 있다.(아니 압도적으로 더 많다 ㅠ ㅠ)
자동차 브랜드를 예로 들면 현대,기아에서 제조한 차는 '국산차'로 출력하고 아니면
'외제차'로 출력해야 한다고 할 때 단순 if 문으로 작성한다면
if car == "현대": print("국산차") if car == "기아": print("국산차") if car != "현대": print("외제차") if car != "기아": print("외제차")
얼마나 끔찍한 상황인가.. 이를 해결하기 위해 python에서는 elif(js에선 else if였는데..) 와 else를 지원한다. 위의 끔찍한 코드를 간결히 해결하기 위해 elif를 써보면
if car == "현대": print("현대는 국산차") elif car == "기아": print("기아는 국산차")
else 도 이용해보겠다.
if car == "현대": print("현대는 국산차") elif car == "기아": print("기아는 국산차") else: print("외제차")
이런식으로 코드를 줄여나갈 수 있다 !!