SW 설계/파이썬

파이썬 기초: 숫자, 문자열 자료형

yztech 2021. 10. 17. 13:56
반응형

개요

자료형은 숫자, 문자열 등 프로그램 상에서 자료 형태로 표현하는 모든 것을 뜻한다.

C언어 전후로 프로그래밍 언어를 이해하는 전통적인 방법은, 그 언어의 자료형을 이해하는 것이었다. 과거 프로그램들은 연산 위주의 코드들이 많았고, C언어 이전에 연산에 주로 사용되어온 Fortran 으로부터 C언어로 넘어가면서, C언어가 처리할 수 있는 수의 범위가 중요했던 때가 있었다.

90년대부터 C언어가 대중화되면서, 대부분의 C언어 관련 서적들은 C언어에서 사용하는 char, int, float, double 과 같은 자료형들을 먼저 다루었고, 90년대 이후로 8, 16, 32, 64 bits 컴퓨터들이 생겨나면서, 각 컴퓨터들이 기본적으로 몇 bits까지 처리하는지, 처리할 수 있는 숫자의 범위는 얼마나 되는지가 C언어와 함께 중요한 이슈처럼 다뤄졌다. C언어는 단순한 문법으로 많은 각광을 받았었고, 형변환을 위해서는 casting 연산자들을 사용해야 경고 메시지를 출력하지 않는 단순 명료한 언어였다.

최근의 고급언어들로 많이 사용되고 있는 Python, Scala와 같은 언어들에서는 과거의 자료형들을 구분하는게 큰 의미가 없어졌다. 그 이유는 모든 자료형들이 클래스로 취급되고, 자료형 간의 형변환이 클래스 메소드를 통해 문제없이 자동으로 이뤄지기 때문에, 자료형을 잘못 사용해서 생기는 프로그램 실행 오류의 위험이 없어졌기 때문이다.

과거의 자료형들이 char, int, float, double과 숫자형, 문자형 혹은 숫자의 범위에 따른 단순한 구분이었다면, 현재 사용되는 고급 프로그래밍 언어들의 자료형은 기초 자료형인 숫자형, 문자형과 더불어 리스트, 튜플, 딕셔너리, 집합과 같이 용도에 따라 구분되는 것이 자료형이라고 이해하는게 더 바람직할 것 같다.

하지만, 모든 프로그래밍의 기본은 숫자를 표시하기 위한 숫자형, 문자를 표시하기 위한 문자형이다. 따라서, 이에 대한 이해만으로도, 기본적인 프로그래밍을 시작하기엔 충분할 것으로 생각된다. 다른 복잡한 자료형들은 이들 자료형들의 확장이고, 이들을 사용하여 코드를 좀더 간결하고 이해하기 좋게 만드는 툴이라고 생각하면 좋을 것 같다,

 

숫자형

숫자형(Number)이란 계산을 하기 위해 사용되는 숫자를 저장하는 자료형을 말한다.

숫자형 변수에는 우리가 생활에서 일반적으로 사용하는 123 같은 정수, 계산시에 많이 사용하는 12.34 와 같은 실수, 프로그래밍시 자주 사용되는 2진수, 10진수, 16진수 등이 있다. 정수와 실수는 컴퓨터 내부적으로 실제 저장되는 값이 다르지만, 2진수, 10진수, 16진수 는 동일한 값을 다른 진법으로 표현한 것에 지나지 않는다. 2진수의 경우 숫자 앞에 binary에 해당하는 0b를 붙이거나, 숫자 끝에 binary에 해당하는b를 붙여 표시하고, 16진수의 경우에는 숫자 앞에 hexadecimal의 x 해당하는 0x를 붙이거나, 숫자뒤에 h를 붙여서 표시한다.

아래 표는 파이썬과 같은 언어들에서 사용되는 숫자들을 간략하게 보여 준다. C, C++, Java, Scala와 같은 다른 프로그래밍 언어들도 동일한 표현 방식을 사용한다.

 

항목 사용 예
정수 123, -456, 0
실수 123.4, -12.34, 1.23e4
2진수 0b10101, 0011001b
16진수 0x1234, ABCDh

정수

정수형 (Integer)은 정수를 표현하는 자료형을 말한다. 다음 예는 양의 정수, 음의 정수와 숫자 0을 변수 a에 대입하는 방법을 보여준다.

>>> a = 123
>>> a = -456
>>> a = 0

실수

실수형 (Floating-point)은 소수점이 포함된 숫자를 표현한다. 다음 예는 실수값들을 변수 a에 대입하는 것으로 보여준다.

>>> a = 123.4
>>> a = -12.34

2진수, 8진수, 16진수 변환

진수는 동일한 값을 다른 진법으로 표현한 것에 불과하다.

>>> a=27
>>> print(bin(a))
0b11011
>>> print(oct(a))
0o33
>>> print(hex(a))
0x1b

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

숫자형은 기본적으로 사칙연산을 지원하고, 수학식에서 사용하는 것과 동일하게 +, -, *, / 연산자들을 사용하여 표시한다.

>>> a = 1
>>> b = 2
>>> a + b
3
>>> a - b
-1
>>> a * b
2
>>> a / b
0.5

제곱: * 연산자

제곱 연산자 (*)는 $x^y$를 파이썬에서 표시할 때 사용한다.

>>> a = 3
>>> b = 4
>>> a ** b
81

몫, 나머지: //,% 연산자

몫 연산자 (//)는 나눗셈후 몫을 반환하고, 나머지 연산자 (%)는 나눗셈 후 나머지를 반환한다.

아래 코드에서 7을 2으로 나누면 몫은 3, 나머지는 1이고, 2를 7로 나누면 몫은 0, 나머지 2이다.

>>> 7 // 2
3
>>> 7 % 2
1
>>> 2 // 7
0
>>> 2 % 7
2

몫 구하기 연산자와 나누기 연산자의 차이점에 주의하자. 7을 2로 나눌 때, 몫 구하기 연산자 //은 3을 반환하지만, 나누기 연산자 / 는 3.5를 반환한다.

>>> 7 // 2
3
>>> 7 / 2
3.5

문자열

문자열(String)이란 우리가 계산을 하는데 사용되는 숫자형과 달리, 우리가 읽고 쓰는데 사용되는 문자들의 집합을 의미한다. 예를 들어 다음과 같은 것들이 문자열이다. 문자열을 표현하기 위해서는 큰 따옴표(" ")를 사용한다. 파이썬이나 MATLAB과 같은 언어들에서는 작은 따옴표도 문자열을 표현하는데 사용한다.

>>> a = "Hello, my phone number is 012-345-6789."
>>> a
'Hello, my phone number is 012-345-6789.'
>>> b = 'Hi, my name is jun.'
>>> b
'Hi, my name is jun.'
>>>

파이썬에서는 문자열 처리를 위한 여러 연산자들을 제공한다. 이러한 연산자들이 편리하기도 하지만, 때로는 다른 언어들과 사용법이 달라서 혼동을 일으키기도 한다.

문자열 연결 (Concatenation): + 연산자

문자형에서 사용되는 + 연산자는 두 개의 문자열을 연결시키는 역할을 한다. 이 연산자는 다른 언어들에서도 동일한 용도로 자주 사용된다. 아래 예에서 c는 a + ", " + b이고, 3개의 문자열을 연결시켜서 하나의 문자열로 만든다.

>>> a = "Hi"
>>> b = "my name is jun"
>>> c = a + ", " + b
>>> c
'Hi, my name is jun'
>>>

문자열 반복: *연산자

파이썬에서 사용되는 문자형에는 문자열을 반복할 수 있는 반복 연산자(*)가 있다. 수학 곱하기 연산(*)과 같은 기호를 써서 혼동되고, 다른 언어들에서는 문자열 반복용으로 잘 사용하지 않기 때문에, 파이썬 코드를 처음 접하는 경우에는 상당한 혼란이 올 수 도 있다. 아래 예에서 * 다음에 오는 숫자는 * 앞 문자열의 반복 횟수를 의미한다.

>>> a = "Hi,"
>>> a * 10
'Hi,Hi,Hi,Hi,Hi,Hi,Hi,Hi,Hi,Hi,'
>>> "*" * 20
'********************'

참고

오늘 주제를 마무리 하기 전에 숫자형, 문자형을 컴퓨터가 어떻게 다루는지 잠시 얘기해보고자 한다. 우리는 프로그래밍을 배우기 위해 숫자형과 문자형을 굳이 구분하기는 하지만, 실제 컴퓨터가 이해하는 명령어 (instruction) 에서는 숫자든 문자든 상관없이 단순히 부호있는 혹은 부호없는 숫자일 뿐이다. 정수형의 경우에만 실제 사용되는 숫자와 컴퓨터가 명령어를 실행할 때 사용되는 값이 동일하지만, 실수형은 국제 표준 기구에서 정한 IEEE-754 단정밀도 (single precision; SP), 배정밀도 (double precision; DP)와 같은 표준 표현 방식을 사용하고, 문자형은 숫자를 ASCII코드로 변환해서 사람이 이해할 수 있는 알파벳으로 표현하게 된다.

 

반응형