python 데이터 타입 중에서 숫자형에 대해서 알아보도록 합시다.
데이터 타입 - 숫자형
python_test 디렉터리를 만들어서 해당 경로에서 test를 진행하도록 하겠습니다. 정수형, 실수형, 복소수형 순으로 점점 더 큰 범위입니다. 그렇기 때문에 더 작은 범주에 속한 것으로 type() 함수 결과가 나옵니다.
정수형(integer, int)
정수형은 소수점이 없는 숫자입니다. 양수, 음수, 0으로 구성되어 있습니다.
test.py 파일에서 a라는 변수에 77을 입력하고, b라는 변수에 -7을 대입한 뒤, type() 함수를 통해서 a와 b의 type를 알아보도록 합시다.
a = 77
b = -7
print(type(a), type(b))
아래와 같이 입력을 하여 python 파일을 실행시켜 봅시다.
$ python3 test.py
결과를 보시면, 두 개 모두 int 형, 즉 정수형인 것을 알 수 있습니다.
실수형(floating-point, float)
실수형은 소수점이 있는 숫자입니다. 부동 소수점 방식으로 저장되며, 컴퓨터의 이진 표현에 따라 약간의 부정확성이 발생할 수 있습니다.
아래와 같이 숫자들을 입력하였을 때, 결과를 예측해 봅시다.
a = 3.14
b = -77.0
print(type(a), type(b))
결과를 보시면, 두 개 모두 float형, 즉 실수형인 것을 알 수 있습니다. 혹시나 b의 값인 -77.0을 보시고 정수형이라고 생각하시지는 않으셨는지요? 헷갈릴 수 있는 부분이라서 한 번 넣어봤습니다.
복소수형(complex number, complex)
복소수는 실수부와 허수부를 가지는 숫자입니다. 허수부는 j를 사용하여 표현합니다.
아래와 같이 숫자들을 입력하였을 때에는 어떻게 나올까요? 예측해 봅시다.
a = 7 + 7j
b = -7j
c = 7 + 0j
print(type(a), type(b), type(c))
결과를 보시면, 두 개 모두 complex형, 즉 복소수형인 것을 알 수 있습니다. 실수부와 허수부 중에서 허수부만 있으면 복소수형이라고 하지만, 실수부만 있으면 실수형이라고 합니다. 허수부가 없더라도 0j로 표현을 해줘야지 복소수형으로 인식됩니다.
기본적인 숫자형 연산
기본적으로 덧셈과 나눗셈은 익숙하실 것으로 생각됩니다.
곱셈 같은 경우에는 x가 아닌 *으로 표현이 됩니다.
제곱을 의미하는 지수 연산같은 경우에 *를 2번 연달아 표현하여 **으로 표현이 됩니다.
나눗셈이 헷갈릴 수 있는데, 몫과 나머지를 구하는 연산이 있기 때문에 일반적인 나눗셈 연산이라고 생각하면 됩니다.
몫 연산은 나눗셈을 했을 때 몫만 취하는 연산입니다.
나머지 연산은 나눗셈을 했을 때 나머지만 취하는 연산입니다.
a = 77
b = 3
print(a + b) # 덧셈
print(a - b) # 뺄셈
print(a * b) # 곱셈
print(a ** b) # 제곱
print(a / b) # 나눈셈
print(a // b) # 몫 연산
print(a % b) # 나머지 연산
해당 코드 결과를 확인하면 다음과 같습니다.
결과를 보시면 기본적으로 정수형 연산이기 때문에 결과도 정수형이 나오지만, 나눗셈을 보시면 실수형 결과가 나옵니다. 참고해 두시면 좋을 것 같습니다.
형 변환
지금까지 배운 int, float, complex에 대해서 형변환을 할 수 있습니다.
- int(): 실수나 문자열을 정수로 변환
- float(): 정수나 문자열을 실수로 변환
- complex(): 숫자를 복소수로 변환
예시를 들면 아래와 같습니다.
print(int(77.0))
print(float(3))
print(complex(3))
여기서 헷갈릴 부분은 complex(3) 밖에 없을 것 같습니다. 해당 값은 정수형으로 복소수형으로 변환하는 형변환이 이루어집니다. 그렇기 때문에 결과를 보시면 3+0j로 표현이 됩니다.
마무리
python의 숫자형에 대해서 알아보았습니다. 아무래도 일반적인 수학이라서 쉽게 생각하셨을텐데, 조금 헷갈린 포인트들도 있으시지 않으셨나요? 잘 소화시키셔서 여러분의 것으로 만드셨으면 좋겠습니다. 다음 시간에는 문자열 자료형에 대해서 알아보도록 하겠습니다.
'개발 > python' 카테고리의 다른 글
[python] 문자열 관련 함수 (0) | 2024.09.19 |
---|---|
[python] 문자열 인덱싱과 슬라이싱 (0) | 2024.09.18 |
[python] 문자열 연산 (1) | 2024.09.17 |
[python] 데이터 타입 - 문자열 만들기 (0) | 2024.09.16 |
[python] ubuntu에서 python3 설치하기 (0) | 2024.09.09 |