논리연산자 A and B ~ A not in B 에 대한 나의 해석

gyeorrr·2023년 1월 13일

논리연산자는 True or False 그러니까 bool type의 값에 작동하는 연산자이다

ex)

A and B   : A도 참이고 , B도 참이면 전체가 참이다 ( A가 참이면 B는 읽지도 않고 참값을 추출 )

A or B    : A나 B 둘 중 , 하나라도 참이면 전체가 참임 ( 나중에 응용은 밑에서 확인 하기)

 not A    : A의 결과를 반전 (말 그대로 True 값이면 False 로 False 면 True 로 인식하게됨)

A in B    : A가 B에 포함되어 있으면 True

   ex ) number = 1, 3, 5, 7

print ( 3 in number)      =>   결과 값은 True 

​

5. A not in B : A가  B에 포함되어 있지 않으면 True ( 4번과 반대 )

​

​

응용 1.

​

수의 범위를 제한하고자 할 때 and 함수를 쓰면 됨

​

해당 범위의 최소값 <= 입력값 and 입력값 <= 최대값

​

ex ) 

n1 = int(input('정수입력 (0~ 100) : '))

if 0 <= n1 and n1 <=100 : 

    print('정상')

if not (0 <= n1 <= 100):

    print('범위초과')

​

응용 2. (삼항연산이라고 하나봄)

AND 함수와 or 함수를 이용하여 , 함수를 짧게 만들 수 있음

age = 20

print((age >= 20) and ('성인') or ('미성년자')

이런식으로 and 함수는 두개의 값이 참이여야 출력 or 은 하나만 해도 출력인데

age >=20 이것이 False로 뜨면 뒤에있는 성인은 자동적으로 False 값이 되고 홀로 남겨진 '미성년자' 함수는 True 값으로 인식되어서 출력됨 ( str 함수는 무조건 True 성질을 띄고 있다 ''공백은 False)

​

반대로 age 값이 참이라면 자연스럽게 뒤에있는 str 함수인 '성인'도 참으로 인식되어서 바로 결과가 출력되고 뒤에있는 or '미성년자' 함수는 읽히지도 않음

문제가 길어지지않는다면 if 문 대신 응용해서 쓰기 정말 편한 것 같다

같은 문제로 예를 들어보이면

s2 = input('문자열 입력:')
d2 = 'apple'  

if s2 == d2:
    r2 = '일치' 
    
if s2 != d2:
	r2 = '불일치'
print(r2)

이걸

s2 = input('문자열 입력: ')

answer = s2 == 'apple' and '일치' or '불일치'
print(answer)

이렇게 간단하게 만들 수 있음

그런데 왠만하면 'apple' 예약어로 저장하는게 나중에 수식길어질 때 쓰기 좋다고 한다.

0개의 댓글