JSITCLUB

파이썬 독학#8 - 참,거짓 - bool 본문

파이썬/입문

파이썬 독학#8 - 참,거짓 - bool

jsitclub 2019. 12. 27. 01:49

bool형은 논리값으로 True(참), Flase(거짓) 두 가지 값을 갖고 있습니다.

주의!! 흔히 논리값을 이야기할 때 2진수일 때를 생각하고, False는 0, True는 1로 알고 있는데, 반드시 앞으로는 False는 기본값,True는 기본값이 아닌 나머지라고 기억하세요. 즉, 정수에서 0은 False, 1 뿐 아니라 0이 아닌 모든 수는 True이고 문자열에서는 "", ''는 False 지만 나머지는 " "(공백), "0", "12" 모두 True입니다. 

1. 비교 연산자 

비교연산자는 두 값을 서로 비교하는 연산자로 결과가 bool형으로 나옵니다. 비교한 값이 맞으면 True, 틀리면 False가 결과가 됩니다.

비교연산자 사용 해석
== a==b a 와 b의 값이 같다
!= a!=b a 와 b의 값이 같지않다
< a<b a가 b보다 작다
<= a<=b a가 b보다 작거나 같다.
> a>b a가 b보다 크다.
>= a>=b a가 b보다 크거나 같다

지금까지 '='을 계속해서 대입연산자라고 할 때 '그러면 같은 건 어떻게 표현하지?'라는 생각이 들지 않았나요? 드디어 같다 와 같지 않다가 나왔네요.

비교 연산자는 주로 나중에 배울 조건문에서 많이 쓰이게 되니 잘 기억하시기 바랍니다.

또한 비교연산자를 사용할 때 변수를 좌변에 사용하는것이 좋습니다.

물론 위와 같이 (a>11)과 (11 <a)의 결과는 똑같습니다.

하지만 해석할때 순서대로 오른쪽에서 읽는다면 각각 "a가 11보다 크다면"과 "11이 a보다 작다면"으로 해석되는데, 앞의 해석은 고정된 11을 기준으로 변하는 a의 값이 큰지 작은지 보는 것이지만,  뒤의 해석은 변하는 수를 기준으로 삼는 것이라 느낌이 어색하게 됩니다.

2. 논리 연산자

논리연산자는 두 개의 조건식의 결과를 묶을 때 사용합니다.

1. and (그리고 : 논리곱)

조건a 의 결과 조건b 의 결과 a and b 의 결과
False False False
False True False
True False False
True True True

프로그래밍 책을 보면 보통 위와 같이 적혀 있는데, 이 표가 무엇을 나타내는지 이야기를 조금 바꿔보겠습니다.

어느 날 선생님께서 "내일 준비물은 풀하고 가위 입니다." 라고 말씀하셨다고 생각해 보죠.

이 말씀은 "내일 준비물은 풀  그리고 가위 입니다."로 바꿀 수 있겠죠?

다음날...

1번 아이가 풀도 안 가져왔어요(False) 그리고 가위도 안 가져왔습니다(False).

  이 학생은 준비물을 잘못 챙긴것(False)

2번 아이는 풀은 안 가져오고(False) 가위만 가져왔습니다(True).

이 학생은 준비물을 잘못 챙긴것(False)

3번 아이는 풀은 가져오고(True) 가위를 안 가져왔습니다(False).

이 학생은 준비물을 잘못 챙긴것(False)

4번 아이만 풀도 가져오고(True) 가위도 가져왔습니다(True).

이 학생만 선생님 말씀을 대로 준비물을 챙겼네요.(True)

AND연산자는 두 조건 모두 True일 때만 결과가 True로 나옵니다.

 

2. or (또는 : 논리합)

조건a 의 결과 조건b 의 결과 a or b 의 결과
False False False
False True True
True False True
True True True

이 내용도 준비물 이야기로 바꿔보죠.

선생님께서 이번에는  "내일 준비물로 풀이나 가위를 가져오세요."라고 말씀하셨다고 생각해 보죠.  "내일 준비물은 풀  또는 가위입니다."로 바꿀 수 있습니다. 이 말씀은 둘 중 하나를 가져오라는 말씀이죠. 

역시 다음날...

1번 아이가 풀도 안 가져왔어요(False) 그리고 가위도 안 가져왔습니다(False).

  선생님의 말씀을 못지킨게 되죠(False)

2번 아이는 풀은 안 가져오고(False) 가위만 가져왔습니다(True).

선생님말씀을 지킨 게 되죠(True)

3번 아이는 풀은 가져오고(True) 가위를 안 가져왔습니다(False).

선생님말씀을 지킨 게 되죠(True)

4번 아이만 풀도 가져오고(True) 가위도 가져왔습니다(True).

선생님말씀을 지킨 게 되죠(True)

OR 연산자는 두 조건 모두 False일 때만 결과가 False로 나옵니다.

 

3.not (부정)

not은 True는 False로, False는 True로 조건의 결과를 반대로 바꿔줍니다.

 

조금 복잡하지만 이야기를 가만히 생각하면 이해가 되실 것이라 믿습니다.

어차피 코드도 글이고 언어이라 생각하기 때문에, 먼저 우리말로 내용을 생각하고 이야기가 완성되면 코딩으로 표현하는 습관을 가지면 나중에 복잡한 프로세스를 구현하거나, 어려운 문제를 풀 때 도움이 될 거예요.

수고하셨습니다. 

Comments