if
-
if (조건식) 이후에
콜론(:)
을 지정해 조건식이 종료됨을 나타낸다. -
C or JAVA 계열은 ‘ grade >= 70 && grade <80 ‘
-
파이썬은 더욱 직관적으로 ‘ 70 <= score < 80 ‘
>>> score = int(input(('Input Score : ')))
Input Score : 77
>>> if 90 <= score <= 100:
... grade = 'A'
... elif 80 <= score < 90:
... grade = 'B'
... else:
... grade = 'C'
>>> print("Grade is " + grade )
Grade is C
>>>
조건식 참/거짓 판단
정수 계열 : 0
실수 계열 : 0.0
시퀀스 계열 : (), [], {}, 빈 문자열(''), 아무것도 없음을 의미하는 None
==> 언제나 거짓으로 판단
>>> bool('')
False
>>> bool(())
False
>>> bool(None)
False
>>> bool(none) # 일부러 Input을 none로 넣어봄 !
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'none' is not defined
단축 평가
- 논리식 판단은
Left -> Right
로 진행 된다.
>>> a = 0
>>> if a & 10 / a :
... print(" a is 0 ")
... else :
... print(" Success " )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
- ZeroDivisionError 에러는 10이란 값을 0으로 나누려고 하였기 때문에 나는 에러다.
>>> a = 0
>>> if a and 10 / a :
... print(" a is 0 " )
... else :
... print(" Success " )
Success
-
논리적인 구조는 같지만
& -> and 사용하면 단축 평가가 이뤄져 예외가 발생하지 않는다.
-
a가 ‘0’인 경우
조건식 [ a & 10/1 ] 중 ‘a’가 거짓이기 때문에 조건식 전체를 보지 않는 것을
단축 평가
라 한다. -
파이썬에서는
and
,or
의 경우반드시 좌변 피연산자가 우변 피연산자보다 먼저
단축 평가
되도록파이썬 인터프리터
에서 보장하고 있다. -
단축 평가
로 얻을 수 있는 장점은 다음과 같다.-
조건문 결과가 결정되는 시점 이후로 추가 판별 연산을 수행하지 않기 때문에 속도가 향상
-
예제와 같은 런타임 에러발생을 try ~ except 구문이 아닌 논리식으로 사전에 차단 가능
-