회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


Python 3강 - 수치 자료형과 연산자

artsone | 2007.10.18 17:01 | 조회 4208
Python03-1.asf

Python 3강
수치 자료형과 연산자

1. 수치 자료형
2. 파이썬 연산자
3. 수치 연산 함수



1. 수치 자료형
정수형 상수
10진, 8진, 16진 상수
실수형 상수
소수점을 포함하건 e, E가 포함된 수
64비트로 표현
유효자리 17, 지수부 10의 -308~308승 정도
롱형 상수
정수형으로 표현할 수 없는 경우
무한 자리 수 표현
복소수형 상수
실수부와 허수부로 표현
각각 실수형으로 표현된다.


#정수형 상수
>>> 123 #10진수
123
>>> 054432 #8진수, 앞에 0을 붙여 8진수 표현(0~7)
22810
>>> 0xaf #16진수, 0x를 붙여 16진수 표현(0~9, a~f)
175
>>> a = 0xaf
>>> a
175

>>> import sys
>>> sys.maxint #최대 표현할 수 있는 정수
2147483647


#실수형 상수

>>> a = 1.2
>>> b = 3.5e3
>>> c = -0.2e-4
>>> print a, b, c
1.2 3500.0 -2e-005
>>> c
-2.0000000000000002e-005
>>> print c #표현이 다르다 뿐이지
-2e-005
>>> 0.1 #오차의 문제로 표시되지만
0.10000000000000001
>>> print 0.1 #값은 같다.
0.1


#롱형 상수

>>> a = 123 #정수형
>>> a
123
>>> a = 123L #롱형
>>> a
123L
>>> a = 128347815647160237641273846 #큰 수가 되면 자동으로 롱형이 된다.
>>> a
128347815647160237641273846L


#복소수형 상수

>>> a = 4 + 5j #a = 실수 + 허수
>>> a.real #실수(리얼리)
4.0
>>> a.imag #허수(이메지너리)
5.0
>>> complex(3, 4) #함수 complex(실수, 허수)로 복소수형으로 만든다.
(3+4j)
>>> c = complex(3, 4) #변수로도 저장 가능하다
>>> c
(3+4j)
>>> c.conjugate() #메쏘드, 부호가 바뀐 복소수를 얻을 수 있다.
(3-4j)




06:30
2. 파이썬 연산자
산술 연산자
관계 연산자
논리 연산자
비트단위 연산자



#산술 연산자
+, - , *, /, //, **, %
/인 경우는 정수/정수 에 주의

// 몫을 취하는 연산자

>>> 2 ** 3
8
>>> 2 ** 3 ** 2 #3의 2승(a라고 할때)을 먼저 계산하고 2의 a승을 계산하게 된다.
512 #2 ** (3 ** 2)와 같다.
>>> (2 ** 3) ** 2
64

>>> 5 % 2 #5를 2로 나눈 나머지
1
>>> -5 % 2 #양수로면 표현되므로 위와 같다.
1
>>> 10 - 12 % 2 #12 % 2부터 연산순서가 된다.
10



>>> 5 + 2 #정수 계산은 정수로
7
>>> 5 + 2.0 #둘중 하나가 실수이면
7.0
>>> 5.0 + 2 #실수로 값이 표현된다.
7.0
>>> 5 / 2 #나누기 연산시에도 같다.
2
>>> 5 / 2.0 #실수로 표현되야 정확한 결과가 나온다.
2.5

>>> 5 / 3 #몫을 구하고
1
>>> 5 % 3 #나머지를 구하게 되는데
2
>>> divmod(5, 3) #divmod()를 이용해 한꺼번에 값을 얻을 수 있다.
(1, 2) #(몫, 나머지)


>>> -6 / 2 #
-3
>>> 5 / 2
2
>>> -5 / 2 # -는 정수와 달리 올림이 된다.
-3
>>> -(5 / 2) #연산 후 앞 실수가 붙는다.
-2


>>> 3 // 4 # // 몫연산자
0
>>> 3.0 // 4.0
0.0
>>> -3 // 4
-1
>>> -3 // 4.0
-1.0
>>> -3 / 4.0 #원래 몫은 -3을 4.0로 나눈 0.75
-0.75
>>> -3 // 4.0 #-3을 4.0로 나눈 몫, 실수이므로 올림
-1.0

연산 순서

+, -
*, /, %, // #왼쪽에서 오른쪽으로 계산
**
+, - (단항 연산자) 예) -3, -2 등 #오른쪽에서 왼쪽으로 계산

>>> ++3 #+(+3)과 같다
3
>>> --3 #-(-3)과 같다

>>> 4 * -5 #연산 순서에 의해 오른쪽 -5부터 계산후 4를 계산한다.
-20


Python03-1.asf 끝



#관계 연산자
객체의 대소를 비교
참이면 1, 거짓이면 0을 돌려준다
연산자의 종류
>, <, >=, <=, ==, !=

예) 10 > 5 이면 참이므로 1

>>> 6 == 9
False
>>> 6 != 9
True
>>> 1 > 3
False
>>> 4 <= 5
True
>>> a = 5
>>> 0 < a < 110
True
>>> 0 < a < 10
True
>>> 0 < a and a < 10 #0 < a < 10을 늘려쓴 것
True
>>> 0 < 5 or a > 10 #어느 한 곳이 참이면 참
True

>>> 'spam' > 'ham' #문장의 길이로 참, 거짓
True
>>> 'ad' > 'add' #처음 문장이 큰 값, 뒤는 작은 값
False
>>> 'A' > 'a' #ascii 코드로 인해 소문자 a가 더 큼
False

>>> [1, 2, 3] < [1, 2, 3, 4] #리스트(튜플)로도 비교 가능
True
>>> [1, 2, 4] < [1, 2, 3, 4] #저장된 데이터 순서대로 비교
False

>>> a = 500
>>> b = 500
>>> a == b #두 변수의 값은 같지만
True
>>> a is b #같은 객체는 아니다. 저장 된 공간이 다르다는 것.
False
>>> c = b #b의 객체를 c에 넣었다.
>>> c is b #같은 저장 공간을 사용하므로 참이 된다.
True


#논리 연산자
종류
not x
x and y
x or y
진리 값의 결과
참이면 1, 거짓이면 0
객체의 진리 값
0 혹은 빈 객체이면 거짓
아니면, 참
None, 0, 0.0, 0L, 0.0+0.0j, "", [], (), {}

>>> not 1 #1(참)의 반대 거짓
False
>>> not 0 #0(거짓)의 반대 참
True
>>> not None #None(공백)의 반대 참
True
>>> not [] #[], (), {}(공백)의 반대 참
True


논리식 계산 순서
결과가 알려지는 시점까지만 계산
최종 계산 시점의 객체를 리턴
1 and 2
3 or 4
b = a > 4 and 10 or 20

>>> 1 and 2 #둘이 참이야 하므로 최종 결과값인 2까지 연산후 출력
2
>>> 3 or 4 #둘중 처음 값이 참이면 최종 결과를 확인할 필요 없이 연산 중단
3

>>> a = 100
>>> b = a > 4 and 10 or 20 #100>4는 참 and 10은 참 or이기 때문에 바로 출력
>>> b
10
>>> a = 1
>>> b = a > 4 and 10 or 20 #1>4는 거짓 and 10도 거짓 or 20은 참이므로 최종 연산 출력
>>> b
20



#비트 단위 연산자
비트 조작 연산자
~ : 비트 반전 (1의 보수)
<<, >> : 좌측 시프트, 우측 시프트
& : 비트 단위 AND
^ : 비트 단위 XOR
| : 비트 단위 OR

python3-1.jpg

예)
>>> ~0 #0은 1로, 1은 0으로 반전 연산자
-1
>>> a = 8
>>> a << 1 #좌측 시프트:비트 전체를 좌측으로 이동
16
>>> a >> 1 #우측 시프트:비트 전체를 우측으로 이동
4

이해)
비트 반전
0000 0000 0000 ... 0000
1111 1111 1111 ... 1111

좌측 시프트
0000 0000 0000 ... 0100 #10진수 4
0000 0000 0000 ... 1000 #좌측 이동하여 8

우측 시프트
0000 0000 0000 ... 0100 #10진수 4
0000 0000 0000 ... 0010 #우측 이동하여 2



&, |, ^ (and, or, xor)
& 특정한 비트를 0으로 만든다.
| 특정한 비트를 1로 만든다.
^ 특정한 비트를 반전한다.


>>> a = 3 # 10진수 3을 2진수로 변환하면 0011
>>> a & 2 # 0011 & 0010
2

0 0 1 1 &
0 0 1 0 의 비트 하나하나를 비교하여 (0은 제외)
위 아래 비트가 같아야지만 1
0 0 1 0 0010의 10진수로 2가 된다.

>>> a | 8 # 0011 | 1000
11

0 0 1 1 |
1 0 0 0 위 아래 비트가 같지 않아도 1

1 0 1 1 결과는 1011, 10진수 11이 된다.

>>> a ^ 2 # 0011 ^ 0010
1

0 0 1 1 ^
0 0 1 0 위 아래 비트가 같지 않을 때 1

0 0 0 1 결과는 0001, 10진수 1이 된다.


Python03-2.asf 15:25

3. 수치 연산 함수
내장 수치 연산 함수

python3-2.jpg

함수 의미
abs(x) x의 절대값
int(x) x를 int(정수)형으로 변환
long(x) x를 long형으로 변환
float(x) x를 float형으로 변환
complex(re, im) 실수부re와 허수부im를 갖는 복소수
c.conjugate() 복소수 c의 켤례 복소수
divmod(x, y) (x/y, x%y) 쌍, 몫과 나머지
pow(x, y) x의 y승


>>> abs(-1)
1

>>> int('1234') #문자열도 수치연산 된다.
1234
>>> int(123.4567)
123

>>> long('123')
123L
>>> long(123)
123L
>>> long(123.456) #정수형이므로 소수점 이하는 버림
123L

>>> float('34.44')
34.439999999999998
>>> float(34.44)
34.439999999999998
>>> float(34) #실수형이므로 소수점 표현
34.0

>>> complex(2, 3) #
(2+3j)
>>> a = complex(2, 3)
>>> a.conjugate() #부호가 바뀜
(2-3j)

>>> divmod(5, 3) #5나누기 3
(1, 2) #1 몫, 2 나머지
>>> q, r = divmod(5, 3) #값을 따로 저장 가능
>>> q #몫
1
>>> r #나머지
2

>>> 2 ** 3
8
>>> pow(2, 3)
8



수치 연산을 위한 모듈
math - 실수 연산
cmath - 복소수 연산

>>> import math
>>> dir(math) #dir() 정리된 이름을 리스트 출력 함수(도움말?)
['__doc__', '__name__', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
>>> math.pi #파이
3.1415926535897931
>>> math.e #
2.7182818284590451
>>> math.sin(1.0) #싸인 sin(레디언 값)
0.8414709848078965
>>> math.sqrt(2) #
1.4142135623730951

>>> degree = 60
>>> rad = math.pi * degree / 180.0

Traceback (most recent call last):
File "", line 1, in
rad = math.pi * degree / 180.0
NameError: name 'math' is not defined

이렇게 에러가 나는 것은 math.ri 모듈을 사용하기 위해
모듈 import를 하지 않아서 이다.


>>> import math #모듈 임포트
>>> degree = 60
>>> rad = math.pi * degree / 180.0 #
>>> rad
1.0471975511965976
>>> math.sin(rad)
0.8660254037844386


Python03-2.asf 끝
285개(1/15페이지)
프로그래밍
번호 제목 글쓴이 조회 날짜
285 [Python] 동적 import - 모듈을 변수로 받아오기 푸딩뱃살 418 2022.10.27 10:45
284 [Python] 파이썬 3.7.7과 3.9.7의 os.path.expanduser() 차이 푸딩뱃살 461 2022.08.18 12:22
283 [Python] error: Microsoft Visual C++ 9.0 is required. 첨부파일 푸딩뱃살 692 2022.08.03 13:35
282 [Python] pyscript 첨부파일 푸딩뱃살 462 2022.06.09 11:21
281 [Python] float is / float not is 푸딩뱃살 600 2022.03.02 15:03
280 [Python] 이터널 문자열 f 푸딩뱃살 839 2022.01.27 16:35
279 [Python] is와 ==의 차이 푸딩뱃살 488 2021.11.25 15:54
278 [Python] Error: ImportError: file line 1: Ba 푸딩뱃살 927 2021.11.16 11:24
277 [Python] 파이썬 디컴파일 - uncompyle6 첨부파일 푸딩뱃살 779 2021.11.10 14:46
276 [Python] 파이썬 확장자 설명 푸딩뱃살 554 2021.11.03 14:38
275 [참고] 웹 fbx 뷰어 푸딩뱃살 474 2021.10.19 15:46
274 [Python] enumerate() 푸딩뱃살 504 2021.10.13 14:44
273 [Python] 아나콘다에서 가상 환경 첨부파일 푸딩뱃살 730 2020.11.21 00:26
272 [Python] pip로 설치 때 퍼미션 에러 사진 첨부파일 푸딩뱃살 1274 2020.06.06 17:13
271 [Python] OpenCV 10-3. 이미지 Thresholding - Otsu's Binarizatio 사진 푸딩뱃살 677 2020.06.05 14:01
270 [Python] OpenCV 10-2. 이미지 Thresholding - Adaptive Threshold 사진 푸딩뱃살 699 2020.06.05 13:58
269 [Python] OpenCV 10-1. 이미지 Thresholding 사진 푸딩뱃살 583 2020.06.05 13:56
268 [Python] OpenCV 9-2. 색 추적 푸딩뱃살 779 2020.06.02 23:29
267 [Python] OpenCV 9-1. 색공간 바꾸기 푸딩뱃살 644 2020.06.02 23:27
266 [Python] OpenCV 8-3. 이미지 비트 연산 사진 푸딩뱃살 534 2020.06.02 23:21