<개인공부>/[Python]

[python] 파이썬 and, or, not 논리 연산자

BlockDMask 2021. 9. 8. 00:30
반응형

안녕하세요. BlockDMask 입니다.
오늘은 파이썬에서 and, or, not 논리연산자에 대해서 이야기 해보려 합니다.

<목차>
1. 논리연산자 and, or, not 설명 및 정리
2. 파이썬 논리연산자 예제

 

1. 파이썬 논리 연산자 and, or, not 설명


논리연산이라는 것이 '둘중 하나가 참이면 참이다', '둘다 참(true) 이면 이 조건문은 참(true)이다' 처럼.
조건문이 참(True)인지 거짓(False)인지 판단하는 것을 의미합니다.

그것들을 판단하기 위한 도구로써 파이썬에서는 and, or, not 을 제공해 줍니다.

논리 연산의 참(True) 인지 거짓(False)인지를 알려주기 위해,
파이썬에서 제공하는 and, or, not 의 연산자의 결과는 Bool 타입으로 반환해줍니다.

즉 and, or, not의 결과는 True 아니면 False 로 나오게 됩니다.

 

1-1) and 연산자

A and B

조건 A 와 조건 B가 모두 참이면 참(True)을 반환합니다.
즉, 조건 A 나 조건 B 중 둘 중 하나라도 거짓이면 거짓(False)를 반환합니다.
당연히 조건 A, B가 둘다 거짓이면 거짓(False)를 반환합니다.

age = 10
name = "block" 이라고 했을때

age >= 9 and name =="block"
이렇게 조건이 걸리면 age >= 9 가  True 이고 , name도 "block" 이 맞기 때문에
조건 A, B 가 모두 True 이므로  and 연산자의 결과도 True  가 나오게 됩니다.

이걸 코드로 보면 이런식으로 됩니다. 

age = 10
name = "kim"

if age >= 9 and name == "block":
    print("and 연산자 결과 : True")
else:
    print("and 연산자 결과 : False")

여기서는 두 조건 age >= 9, name == "block" 이 둘다 true 이므로 
print("and 연산자 결과 : True") 코드가 실행되게 됩니다.

 

1-2) or 연산자

A or B

or 연산은 조건 A, B 둘중 하나라도 True 이면 True가 나오게 됩니다.
즉. 둘다 False가 인 경우에만 False 이고, 조건중 하나라도 True 이면 True 입니다.

age = 10
name = "block"
이런 조건이라고 했을때

age = 10
name = "block"

if age >= 9 or name == "kim":
    print("or 연산자 결과 : True")
else:
    print("or 연산자 결과 : False")

왼쪽 조건인  age >= 9 는 참(True)인 반면,
오른쪽 조건인 name == "kim"은 거짓(False) 임에도 불구하고
print("or 연산자 결과 : True") 이쪽 코드를 타게 됩니다.

왼쪽 조건이 참이기 때문에 or 연산의 결과는 True 가 나오게 됩니다.

 

1-3) not 연산자

not A

not 조건은 조건을 반대로 해석하면 됩니다.
A가 거짓이라면 참(True)를 반환하고
A가 참이라면 거짓(False)를 반환합니다.

age = 10

if not age >= 9:
    print("not 연산자 결과 : True")
else:
    print("not 연산자 결과 : False")

코드를 보면 age >= 9 이 조건문은 분명히 True 인데, 앞에 not 을 붙여기 때문에 False가 반환이 되게 됩니다.
그렇기 때문에 코드 실행의 결과는 "not 연산자 결과 : False"가 나오게 됩니다.

 

1-4) and, or, not 연산자 한눈에 정리

and 연산
True and True => True
True and False => False
False and True => False
False and False => False

or 연산
True or True => True
True or False => True
False or True => True
False or False => False

not 연산
not True => False
not False => True

 

2. 파이썬 and, or, not 예제


2-1) and 연산자 예제

A = 10
B = 99

# True and True
print("1. True and True")
if A == 10 and B == 99:
    print("A == 10 and B == 99 : True")
else:
    print("A == 10 and B == 99 : False")

# True and False
print("\n2. True and False")
if A == 10 and B != 99:
    print("A == 10 and B != 99 : True")
else:
    print("A == 10 and B != 99 : False")

# False and True
print("\n3. False and True")
if A != 10 and B == 99:
    print("A != 10 and B == 99 : True")
else:
    print("A != 10 and B == 99 : False")

# False and False
print("\n4. False and False")
if A != 10 and B != 99:
    print("A != 10 and B != 99 : True")
else:
    print("A != 10 and B != 99 : False")

결과를 보면 True and True 인 경우만 True 가 나오는 것을 알 수 있습니다.

 

2-2) or 연산자 예제

A = 10
B = 99

# True or True
print("1. True or True")
if A == 10 or B == 99:
    print("A == 10 or B == 99 : True")
else:
    print("A == 10 or B == 99 : False")

# True or False
print("\n2. True or False")
if A == 10 or B != 99:
    print("A == 10 or B != 99 : True")
else:
    print("A == 10 or B != 99 : False")

# False or True
print("\n3. False or True")
if A != 10 or B == 99:
    print("A != 10 or B == 99 : True")
else:
    print("A != 10 or B == 99 : False")

# False or False
print("\n4. False or False")
if A != 10 or B != 99:
    print("A != 10 or B != 99 : True")
else:
    print("A != 10 or B != 99 : False")

or 연산을 보면 False or False 인 경우만 False를 반환하는 것을 볼 수 있습니다.
True 가 한개 이상 들어가기만 하면 or 연산자의 결과는 무조건 True 입니다.

 

2-3) not 연산자 예제

name = "BlockDMask"

# not True
print("1. not True")
if not name == "BlockDMask":
    print("not name == 'BlockDMask' : True")
else:
    print("not name == 'BlockDMask' : False")

# not False
print("\n2. not False")
if not name == "ABCDEF":
    print("not name == 'ABCDEF' : True")
else:
    print("not name == 'ABCDEF' : False")

not 은 조건 결과의 반대이기 때문에 조금 헷갈릴 수 있는데 천천히 보시면 이해가 갈 것 입니다.

 

 

이상으로 파이썬 논리연산자 and, or, not 에 대해서 알아보았습니다.
감사합니다.

반응형