728x90
반응형
파이썬 실습창을 열 수 있습니다.실습창 열기
부엉이는 지혜의 상징입니다. 티베트 등에서는 깨달음의 의미가 있습니다. 우리나라에서는 재물을 상징합니다.
깨달음으로 지혜를 얻고, 부자되세요.
1. 불 표현식
불 표현식(bool expression)을 생성하는데 사용하는 not, and, or의 의미는 기존 수학의 개념보다 확장되어 있습니다.
파이썬의 불 표현식 평가 방법은 다음과 같습니다.
① True와 False의 구분은 다음과 같다.
- True(참) : True, 0이 아닌 수, 비어있지 않은 str, list, tuple, dict
- False(거짓): False, 0, None, 비어있는 str, list, tuple, dict
② 평가 순서와 방법은 다음과 같다.
- not, and, or 순서이며 같은 경우에는 왼쪽에서 오른쪽 순으로 평가한다.
- 오른쪽 피연산자는 필요한 경우에만 사용된다. 예를 들어, 'x and y'는 x와 y를 모두 참조하는 것이 아니라, x가 참인 경우에만 y를 반환한다.
- 이러한 방법을 단축평가(short-circuit evaluation)라 한다.
③동등연산자(==)의 평가 방법은 다음과 같다.
- list, tuple : 모든 원소들을 순서대로 비교하여, 모두 같은 값이면 True, 그 외는 False이다.
- dict : x, y에 모두 같은 key가 있고, 또한 key의 value가 같으면 True, 아니면 False이다.
- set, frozenset: 두 집합의 모든 원소가 같으면 True, 아니면 False이다.
- x is y, x is not y: x와 y가 메모리의 동일한 object를 가리키면 True, 아니면 False이다.
다음 표를 실습하고 이해하십시오.
no | 연산자 | python 의미 | example |
1 | x and y (논리 곱) |
x가 거짓이면 x, 아니면 y를 반환한다. |
x=True y=3 z=[] a=x and y #a=3 :x가 참이므로 y 반환 b=z and y #b=[] :z가 거짓이므로 z 반환 c=x and y and z #c=[] :'x and y'=>'y and z'=>[] |
2 | x or y (논리 합) |
x가 거짓이면 y, 아니면 x를 반환한다. |
x=True y=3 z=[] a=x or y #a=True :x가 참이므로 x 반환 b=z or y #b=3 :z가 거짓이므로 y 반환 c=x or y or z #c=True :'x or y'=>True |
3 | not x (논리 부정) |
x가 거짓이면 True, 아니면 False를 반환한다. |
x=True y=3 z=[] a=not x #a=False :x가 True이므로 False 반환 b=not z #b=True :z가 False이므로 True 반환 c=not not y #c=True y는 참. 참의 반대의 반대 |
4 | x == y (동등 연산) |
위의 평가 방법 참조 | x=True y=3 z=[] a=x==y #a=False :x와 y가 같지 않다. b=x==bool(y) #b=True :bool(y)는 True c=x==bool(y)==(not bool(z)) #c=True |
5 | x is y x is not y (identity) |
id가 같으면 True, 아니면 False를 반환한다. |
x=3 y=3 z=[3] a=x is y #a=True :x와 y의 id가 같다. b=x is z #b=False :x와 z의 id가 다르다. c=x is not z #c=True :x와 z의 id가 다르다. |
2. 문제 해결
다음 문제들을 해결하여 보세요.
no | item | example | output | description |
1 | x**y | a=3**2**3 print(a) |
6561 |
power(지수) 3**2**3=3**(2**3) |
2 | shifting (이동연산) |
a=13 b=a<<2 print(b) |
52 |
10진수 13은 2진수 1101이다. 왼쪽으로 2회 밀면(shift) 110100 이 된다. 2진수 110100은 52이다. |
3 | bitwise xor (x^y) |
a=13^6 print(a) |
11 |
xor(exclusive-or:배타적 논리합)는 서로 다르면 참이다. 13 ---> 1101 6 ---> 0110 xor --->1011 (서로 다르면 1) 2진수 1011은 십진수 11이다. |
4 | comparison (비교연산) |
a=3<5<4 print(a) |
False | 비교 검사 다항연산이 가능하다. 3항연산을 한다. '3보다 5가 크고 5는 4보다 작다' 틀리므로 False |
5 | boolean (논리연산) |
a=not(1>2)or(3<4)and(5>6) print(a) |
True |
우선순위는 not, and, or이다. 1. not(False) or True and False 2. True or False 3. True |
6 | 교환법 (exchange) |
a,b,c=1,2,3 c,b,a=a,b,c print(a,b,c) |
3 2 1 |
‘=’ 오른쪽의 id를 왼쪽에 순서대로 할당한다. |
7 | 반복법(toggle) | n,s=0,5 while n<5: print(s) s=9-s n+=1 |
5 4 5 4 5 |
두 수의 반복 2개의 수 x, y를 반복하려면, t=y #x부터 출력할 때는 y를 초기 값 t=(x+y)-t #이 부분을 반복한다. print(t) |
8 | x and y(논리 곱) x or y (논리 합) |
x=True y=3 z=[] a=x and y b=z and y c=x or y and z print(a) print(b) print(c) |
3 [] True |
and : x가 거짓이면 x,아니면 y를 반환 or : x가 거짓이면 y, 아니면 x 반환 |
9 | x == y (동등 연산) |
x=3 y=3 a=x is y print(a) |
True |
id가 같으면 True, 아니면 False를 반환 |
중요한 부분입니다. 꼭 이해하십시오.
수고하셨습니다.
오늘 끝.
728x90
반응형
'알고리듬' 카테고리의 다른 글
[알고리듬 ] #40 파일 처리 (1) | 2024.04.07 |
---|---|
[알고리듬] #39 파일 입출력 (0) | 2024.04.06 |
[알고리듬] #37 우선순위와 변수활용 (0) | 2024.04.05 |
[알고리듬] #35 내장함수 (0) | 2024.04.05 |
[알고리듬] #34 구문구조와 할당문 (0) | 2024.04.05 |