728x90
📍 단락평가(Short Circuit Evaluation)
논리연산에서 코드의 앞만 보고 값을 정할 수 있는 경우 뒤에 나타나는 코드는 분석하지 않고도 값을 결정하는 방법을 뜻하는데,
쉽게 말하면 어떤 논리연산자(and
, or
)가 오느냐에따라 비교대상이 달라진다는 의미다.
이전에 프로그래머스 level-1
문제를 풀고 다른사람의 코드를 볼 때 궁금했던 코드가 있었다.
예를 들면, return 10 % 2 == 0 and 'even' or 'odd'
와 같은 코드인데, 이 코드를 한번에 해석할 수 있다?!라고 하면 이 글을 넘겨도 된다.
하지만, 모르는 사람도 있기에 간략하게나마 작성하려 한다. (자세한 내용은 코딩도장의 강의를 듣자.)
결론적으로 and
, or
연산자가 있을 때 단락평가는 다음과 같다.
A and B
: A가True
면 뒤의 값을 반환하고, A가False
면 앞의 값을 반환한다.A or B
: A가True
면 앞의 값을 반환하고, A가False
면 뒤의 값을 반환한다.
내용이 확 와닿지 않는가? 그럼 다음 사진을 보자.
다음 사진은 and
와 or
의 진리표이다. 여기에서 규칙을 찾을 수 있는데,
and
: 앞이False
면 뒤는 쳐다보지않고 그대로 앞의 값(False
)을 출력한다. 반면에 앞이True
면 뒤의 값을 분석해야하기 때문에 뒤의 값을 출력한다.or
: 앞이True
면 뒤는 쳐다보지않고 그대로 앞의 값(True
)를 출력한다. 반면에 앞이False
면 뒤의 값을 분석해야하기 때문에 뒤의 값을 출력한다.
보통 숫자, 숫자
와 같은 값들은 비교하기 쉬운데 숫자, 문자
혹은 문자, 숫자
등 섞여있는 형들은 한눈에 비교하기가 쉽지 않다.
728x90
다음의 문제를 보고 답이 무엇인가 곰곰이 생각해보자. 해답은 코드 밑을 드래그해보자!
# 1. and
print('python' and 'JS')
print('python' and 0)
print(0 and 'python')
print(0 and False)
# 2. or
print('python' or 'JS')
print('python' or 0)
print(0 or 'python')
print(0 or False)
# 3. arr or -1
arr = []
print(arr or -1)
arr = [1]
print(arr or -1)
정답은 다음과 같다. 하단을 드래그 해보자
- 'JS'
- 0
- 0
- 0
- 'python'
- 'python'
- 'python'
- False
- -1
- [1]
지금까지 단락평가에 대해서 짧게 배워봤다.
이를 토대로 프로그래머스 문제 풀 때 잘 써먹을 수 있을 것 같다.
반응형
'Python > 파이썬 문법 Tips' 카테고리의 다른 글
[ 파이썬(python) ] 범위가 큰 2차원 배열 / 문자열을 출력 할 때 (0) | 2021.05.27 |
---|---|
[ 파이썬(python) ] n * n 행렬에서 target * target 크기만큼 자르기 (0) | 2021.05.20 |
[ 파이썬(python) ] 이중 반복문에서 print의 위치 별 출력 (0) | 2021.05.19 |
[ 파이썬(python) ] cnt 유용하게 사용하기 (0) | 2021.05.18 |
[ 파이썬(python) ] 리스트, 문자열 거꾸로 출력하기 (0) | 2021.05.12 |
댓글