#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목[re]Boolean and or 질문드립니다.2022-10-08 23:51
작성자

print(None or 1)을 실행하면 1이 나오고, print(0 or 1)을 실행해도 1이 나오는 것으로 확인했는데, 판단 기준이 궁금합니다. 

위의 경우 None을 False로, 1을 True로 판단하는 이유가 무엇인가요?

0을 False로, 1을 True로 판단하는 이유가 무엇인가요?


문자열, tuple, dictionary, list 등의 값이 비어있을 때와 숫자가 0일때, 그리고 None에서 bool 값이 False가 됩니다.

 

False로 정의된 값

* None

* 0 (int), 0.0 (float)...

* "", (), [], {}, set()...


True로 정의된 값

* False로 정의된 값을 제외한 모든 값 


print(1 and "Hello")를 실행하면 "Hello"이 나오고, print(0 and 1)을 실행하면 0이 나오는 것으로 확인했는데, 판단 기준이 궁금합니다.

1과 "Hello", 0과 1을 True 혹은 False로 판단하는 근거와 그렇게 판단한 뒤에 출력하는 값이 왜 각각에 해당하는 지 질문드립니다.


and 연산자는 두 값 모두 True인지 확인합니다. 

두 값 모두 True일 때는 두 번째 값을 반환하고, 첫번째 값이 False면 두번째 값은 읽지 않고 첫번째 값을 return 합니다. 마찬가지로 두 번째 값만 False면 두번째 값을 반환합니다.


-> 1과 "Hello"는 모두 True이므로 두번째 값인 "Hello" 반환

-> 0 and 1에서는 0이 False이므로 첫번째 값인 0 반환


추가로 or 연산자는 두 값 중에 하나라도 True 면 True를 반환합니다. 

첫번째 값이 True면 두번째 값은 읽지 않고 첫번째 값 반환, 두 번째 값만 True면 두번째 값 반환, 둘 다 False면 두번째 값을 반환합니다.


-> 0 or 1에서는 두번째 값이 True 이므로 1




댓글