본문 바로가기
ProgrammingLanguage/Python

03 파이썬 자료형| 숫자 자료형, 연산자, 우선순위

by 씽쌩쏭 2021. 2. 13.
728x90

정수형 : 소수점이 없는 숫자 (integer)

실수형 : 소수점이 있는 숫자 (floating point, 부동 소수점)

 

부동 소수점은 프로그래밍을 하면서 반드시 알아둬야 할 단어입니다.

실수형의 경우 52.273을 0.52273 * 10²와 같이 소수점의 위치를 바꿔도 결국 같은 숫자이므로,

'소수점이 움직이는 숫자'라는 의미로 부동 소수점이라고 표현합니다!

 

숫자 출력해보기

 

>>> print(273)
273
>>> print (52.273)
52.273

 

둘의 자료형을 확인해보겠습니다.

앞의 포스팅에서 자료형을 확인할 때는 type()함수를 사용한다고 언급했었죠?

>>> print(type(52))
<class 'int'>
>>> print(type(52.273))
<class 'float'>

int는 integer(정수)의 앞 세 글자를 떼어 표현한 것이고,

float은 floating point(부동 소수점 = 실수라는 뜻)의 앞 단어에서 가져온 것입니다.

 

0을 print할 때와 0.0을 print할 때는 각각 어떤 결과가 나올까요?

결론은 둘다 0이니 똑같은 결과가 나올까요?

직접 입력해 확인해봅시다!

>>> print(0)
0
>>> print(0.0)
0.0
>>> print(type(0))
<class 'int'>
>>> print(type(0.0))
<class 'float'>

똑같은 0을 나타내는 숫자이지만 0.0은 부동소수점을 포함하고 있기 때문에 float이 출력되는 걸 확인할 수 있습니다.

 

파이썬에서 지수 표현

 

수학 연산, 인공지능 알고리즘을 보면

0.52273e2 또는 0.52273E2 등의

특이한 숫자 표현을 볼 수 있습니다.

이는 파이썬에서 부동 소수점을 지수승으로 표현하는 방법입니다!

0.52273 * 10²를 0.52273e2 혹은 0.52273E2라고 표현하는 것입니다.

>>> 0.52273e2
52.273
>>> 0.52273e-2
0.0052273

 

숫자 연산자

 

사칙연산자: +, -, *, /

 

순서대로 더하기, 빼기, 곱하기, 나누기를 의미합니다.

이것들은 모두 알고 있을 것이라 생각하고 예시만 보고 넘어가도록 하겠습니다^^

>>> print("5 + 7 =", 5 + 7)
5 + 7 = 12
>>> print("5 - 7 =", 5 - 7)
5 - 7 = -2
>>> print("5 * 7 =", 5 * 7)
5 * 7 = 35
>>> print("5 / 7 =", 5 / 7)
5 / 7 = 0.7142857142857143

 

 

정수 나누기 연산자: //

 

위에서 보면, 5 / 7 의 연산자는 소수점까지 모두 표시되었죠?

정수 나누기 연산자 // 는 소수점 이하의 자릿수를 떼어 버린 후, 정수 부분만 남기는 연산자입니다!

>>> print("3 / 2 = ", 3 / 2)
3 / 2 = 1.5
>>> print("3 // 2 =", 3 // 2)
3 // 2 = 1

 

나머지 연산자: %

 

a % b 연산자는 a를 b로 나눴을 때의 나머지를 표시하는 연산자입니다.

확인해볼까요?

>>> print("5 % 2 =", 5 % 2)
5 % 2 = 1 #몫 = 2, 나머지 = 1

※ 현재는 이 나머지 연산자는 왜 필요한거지...? 싶지만 많이 사용하는 연산자이므로 기억해 둬야 합니다!

 

제곱 연산자: **

 

파이썬에서는 숫자를 제곱해주는 제곱 연산자가 있습니다. C와 다르게 말이죠!

예를 들어, 2⁴ 는 2**4로 표시합니다.

>>> print("2 ** 1 =", 2 ** 1)
2 ** 1 = 2
>>> print("2 ** 2 =", 2 ** 2)
2 ** 2 = 4
>>> print("2 ** 3 =", 2 ** 3)
2 ** 3 = 8
>>> print("2 ** 4=", 2 ** 4)
2 ** 4= 16

 

연산자 우선순위

 

연산에는 우선순위가 존재합니다. 파이썬에서도 마찬가지로 적용됩니다!

5 + 3 * 2

위의 예시는 어떻게 실행될까요?

3 * 2가 먼저 계산되고 5가 더해지겠죠?

좀 더 어려운 예시를 봅시다.

>>> print(2 + 2 - 2 * 2 / 2 * 2)
0.0
>>> print(2 - 2 + 2 / 2 * 2 + 2)
4.0

우선순위에 따라 직접 계산해보시길 바랍니다.

 

하지만 이런 방법을 권장하진 않습니다.

이렇게 하면 한 눈에 무엇이 먼저 연산되었는지 보이지 않기 때문에,

가독성이 떨어집니다.

따라서 연산자 우선순위가 확실한 경우에도 다음과 같이 괄호로 감싸주는 것이 좋습니다!

(연산자 우선순위가 헷갈린다면 괄호를 사용하시길 바랍니다.)

( 5 + 3 ) * 2
5 + ( 3 * 2 )

 

더보기

TypeError 예외

 

서로 다른 자료를 연산하면 TypeError라는 예외가 발생합니다.

언제 발생하는 오류인지 확인해보겠습니다.

>>> string = "문자열"
>>> number = 273
>>> string + number
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    string + number
TypeError: can only concatenate str (not "int") to str

문자열과 숫자를 + 연산자로 연결했습니다.

문자열은 + 연산자를 '문자열 연결 연산자'로 사용하려 하고,

숫자는 + 연산자를 '덧셈 연산자'로 사용하려고 하니 충돌이 발생한 것입니다.

 

위와 같은 오류가 발생했다면 서로 다른 자료를 연산한 것입니다. 잘 기억해 두시길 바랍니다.

 

 

 

다음 장에서는 변수를 선언하고, 할당하고, 참조하는 방법에 대해 알아보겠습니다.

input() 함수와 int() 함수, float() 함수와 str() 함수에 대해서도 알아보고, 그 때 발생하는 예외도 설명하겠습니다.