본문 바로가기
프로그래밍/Python

컴퓨터 논리연산자 사고방식에 대해서(AND, OR, NOT)

by XMRTJDGHKRH 2023. 9. 30.

알고리즘 학습 중 or을 사용해서 리스트의 값이 비었을 경우, 다른 값을 출력해주는 코드를 보게 됐다.

print([] or '값이 비었음.')

 

나는 논리연산자를 단순히 그 결과값이 True인가 False인가로 밖에 생각을 안했다.

논리 연산자를 사용해서 어느 객체를 받는가에 대한 생각은 해본적이 없어서 논리연산자(AND, OR)에 대해서 다시 학습하게 됐다.

 

모두 알고 있을 AND와 OR의 정의이다.

AND

두 값이 모두 참일 경우 참의 값을 반환한다.

 

OR

두 값 중 하나의 값이라도 참일 경우 참의 값을 반환한다.

 

 

 

 

학습 과정 중 본인은 이해를 못하겠는 결과 값을 보게 됐다. 아래와 같다.

# AND에서
# Case 1
print(True and 'A') # 결과값 : A
print('A' and True) # 결과값 : True

# Case 2
print(False and '') # 결과값 : False
print('' and False) # 결과값 : 


# OR에서
# Case 1
print(True or 'abc')  # 결과값 : True
print('abc' or True) # 결과값 : abc

# Case 2
print(False or '') # 결과값 : 
print('' or False) # 결과값 : False

위와 같이  AND에서 두 값이 모두 참인데 왜 뒤에 있는 값인 A를 반환하며

두 값이 모두 거짓인데 앞에 있는 False를 반환하는지 이해가 안됐으며

 

OR에서는 두 값이 참인데 앞에 있는 값인 ''를 반환하며

두 값이 모두 거짓인데 뒤에 있는 값은 False를 반환하는지 이해가 안됐다.

 

 

고민을 하던 중 쉽게 이해할 수 있는 논리를 세웠다. 논리는 다음과 같다.

  1. 가장 마지막 값을 반환한다.
  2. 조건 확인 시 바로 반환한다.

 

AND의 Case1에서는 앞에 있는 값이 True로 참이기 때문에 뒤에 있는 값을 확인한다. 뒤에 있는 값 또한 참이기 때문에 가장 마지막에 확인한 값인 A를 반환한 것이다.

 

AND의 Case2에서는 앞에 있는 값이 False로 거짓이기 때문에 이미 조건은 거짓이 됐기 때문에 바로 False를 출력하게 되는 것이다.

 

 

OR에서도 마찬가지로 Case 1에서 앞에 있는 값이 True로 참이기 때문에 이미 조건은 성립된다. 때문에 뒤에 있는 값을 확인하지 않고 바로 True를 반환하는 것이다.

 

Case 2의 경우에서는 앞에 있는 값이 거짓이기 때문에 뒤에 있는 값을 확인하고 뒤에있는 값도 거짓이기 때문에 그냥 마지막 값인 공백 ''을 출력하는 것이다.

 


정리하자면..

내가 정의한 논리대로 생각하면 될 것 같다. 하지만 내 생각대로 세운 논리이기 때문에 틀린 논리일 수 있을 것 같다. 정확히 확인하지 못한 내용을 올리는 이유는 내가 정의한 논리가 틀릴 경우 반박해주길 바란다.

 

나와 같이 논리 연산자에 대해 이해하지 못한 부분이 있을 경우 참고가 되면 좋겠다.

 

이 기회로 논리 연산자에 대해 조금 더 이해한 것 같다.