F37.101 컴퓨팅 기초: 처음 만나는 컴퓨팅(First Adventures in Computing)

Chapter 1. 기본자료형#

이 장에서는 기본 자료형(정수형, 실수형, 문자열)과 연산자를 이용하여 표현하는 방법을 알아본다.

학습목표와 기대효과

  • 학습목표

    • 기본자료형을 알아보자.

    • 산술연산자를 이용하여 수식을 표현해보자.

    • 숫자, 문자 데이터를 변수에 저장해보자.

  • 기대효과

    • 파이썬으로 산술연산을 위한 표현식을 작성할 수 있다.

    • 정수, 실수, 문자열 자료 저장을 위한 변수의 개념을 이해할 수 있다.

기본 자료형#

파이썬은 다양한 데이터 타입(자료형, Data Type)을 지원하고 있다. 데이터 타입은 데이터가 가지고 있는 속성을 의미하며, 데이터 타입에 따라 지원하는 연산이 다르다. 파이썬이 지원하는 몇 가지 주요 데이터 타입을 알아보고, 그에 따른 연산식을 표현해보자.

  • 숫자형 데이터

    • 정수형(int)

    • 실수형(float)

  • 문자열(str)

  • 불(bool): 논리형으로, True 또는 False를 가진다.

  • None: 값이 없음을 의미하며, ‘아무것도 반환하지 않은’ 함수의 반환 값이다.

Tip

다른 프로그래밍 언어에서는 실수형에 float과 double형이 존재하지만 파이썬에서는 double형은 따로 존재하지 않는다.

또한 문자(char)와 문자열(string)을 따로 분류하고 있지만, 파이썬에서는 문자 길이에 상관 없이 문자열로 다루고 있다.

숫자 데이터#

정수형 데이터#

정수형 데이터는 0을 포함한 자연수이다. 예를들어, …, -100, -10, 0, 1, 10, 100, … 등이 정수형 데이터이다.

Tip

python에서는 정수데이타를 표현할 수 있는 범위의 한계는 없다. 즉, 엄청 큰 양의 정수, 엄청 작은 음의 정수를 버림없이 표현이 가능하다.

엄청 큰 혹은 엄청 작은 수를 코드셀에 적고 실행시켜보자. 코드를 실행하는 방법은 앞 장에서도 설명했 듯이, 코드셀 앞에 실행버튼을 눌러도 되고, 단축키를 사용해도 된다.

  • Ctrl + Enter : 코드셀 실행 후 커서는 방금 실행한 셀에 있다.

  • Shift + Enter : 코드셀 실행 후 커서가 다음 셀로 넘어간다. 다음 셀이 없을 경우, 새로운 셀이 만들어진다.

셀을 실행을 시키면 해당 셀 아래에 결과가 출력된다.

123456789012345678901234567890 * 1234556677
152414403196171593319617159331809301530
4434567788884344431667886553 - 3354565631156734333583729667788999900
-3354565626722166544699385236121113347

실수형 데이터#

실수형 데이터는 소수점을 가진 수로 -5.432, 0.0, 5.0, 9.5, … 등이 실수형 데이터이다.

컴퓨터에서 실수를 표현하는 방법은 정수에 비해 훨씬 복잡하다.

실수를 표현하는 방법은 고정된 자릿수의 소수를 표현하는 고정소수점 방식과, 소수점의 위치를 고정하지 않는 부동소수점 방식이 있다.

그러나 고정소수점 방식은 제한된 자릿수로 인해 표현할 수 있는 범위가 매우 작아 컴퓨터에서는 일반적으로 부동소수점 방식을 이용한다. 부동소수점 방식은 실수를 표현할 때 지수부와 가수부로 나누는데, 아래의 수식을 이용하여 매우 큰 실수까지도 표현할 수 있다.

\( ±(1.가수부)×2^{(지수부-127)} \)

예) \(1.23 × 10^4\): 1.23은 가수부, 4는 지수부

실수형(부동소수점) 데이터 표기법

컴퓨터에서 표준화된 실수형 데이터 표기법은 크게 두 가지가 있다.

첫 번째는 0.12, 1.12345678 등과 같이 우리가 흔히 아는 소수점 표현 방식이다. 실수의 경우 표현할 수 있는 유효한 자리수의 한계가 존재한다. 파이썬에서의 소수점 표현 방식의 유효한 자리수의 한계는 소수점 16자리이다.

  • 소수점 표현 방식의 유효한 자리수 한계를 확인해보자. 소수점 17자리에서 반올림되어 소수점 16자리까지 표현되는 것을 확인할 수 있다.

1.12345678901234567890123456789
1.1234567890123457

실수형(부동소수점) 데이터 표기법

두 번째는 지수 표현 방식이다. 지수(Exponential)는 로마자 E 또는 e로 표기하는데 과학이나 공학에서 아주 큰 숫자를 간단하게 표기할 때 사용하며, 의미는 10^이다. 예를들어, 지수 표현 방식으로 1.23e+5은 \(1.23 * 10^5\)이며, 123000.0과 같다. 1.23e-4는 \(1.23 * 10^{-4}\)이며 0.000123과 같다.

1.23e+5
123000.0
1.23e-4
0.000123
  • 지수 표현 방식도 유효한 자리수의 한계가 있다. 예를 들어, \(1.23 * 10^{308}\)은 지수표현 방식으로 표현이 가능하다.

  • \(1.23 * 10^{309}\)의 경우 지수 표현 방식에서 유효한 자리수의 한계를 넘어가서 inf(infinity)로 나온다.

1.23e+308
1.23e+308
1.23e+309
inf

부동소수점 방식의 한계

부동 소수점 방식은 유효한 자리수의 한계로 실수를 표현하는데 오차가 발생한다. 그 이유는 위에서 언급한 수식때문이다. 이 수식을 사용하면 표현할 수 있는 범위는 늘어나지만, 10진수를 정확하게 표현할 수는 없게 된다.

예를 들어, 0.1 + 0.2를 계산하면 0.30000000000000004로 0.3과 같은지를 확인하면 False가 나온다.

컴퓨터에서는 숫자를 비트로 표현하는데 예를 들어, 1부터 10까지 정수는 10개지만 실수는 무한히 많다. 무수히 많은 실수를 유한개의 비트로 정확하게 표현할 수가 없다. 따라서 실수는 유한개의 비트를 사용하여 근사치를 표현한다. 즉, 0.30000000000000004는 0.3을 표현한 근사치이다. 일반적으로 두 수가 같은 실수라는 것을 판단하기 위해 머신 엡실론(machine epsilon)을 기준으로 한다.

숫자형 연산자(Numeric operators)#

정수형, 실수형 데이터는 다음과 같은 산술연산자를 사용하여 연산이 가능하다.

연산 기호

의미

예시

실행 결과

+

덧셈(Addition)

2 + 2

4

-

뺄셈(Subtraction)

2.0 - 2.0

0.0

*

곱셈(Multiplication)

2 * 3

6

/

나눗셈(Division)

6 / 3

2.0

//

버림나눗셈,몫(Floor division)

10 // 2

5

%

나머지(Remainder)

3 % 2

1

**

제곱(Square)

2 ** 3

8

참고

정수값으로 연산을 하면 그 결과는 정수형으로 나오고, 실수값으로 연산을 하면 그 결과는 실수형으로 나온다. 그러나 나눗셈(Division) 연산의 경우 정수값, 실수값 관계없이 항상 그 결과는 실수형으로 나온다.

주의

  • 파이썬에서는 대괄호[ ]는 리스트(list), 중괄호{ }는 셋(set)의 의미를 갖고 있으므로 수식을 묶을 때에는 소괄호( )만 사용할 수 있다.

  • 제곱연산자의 경우 ^로 표기하지 않도록 주의하자.

연산자가 손에 익히도록 아래의 수식을 코드로 작성해보자.

😄문제1. 몫 구하기

50 나누기 4의 몫과 나머지를 구하시오.

😄문제2. 수식을 코드로 표현해보기

\( 5^2*10÷4 \)

😄문제3. 수식을 코드로 표현해보기

\(\frac {10.5 + 2 × 3} {45-3.5}\)

문자열 데이터#

문자열은 텍스트의 묶음으로 홑 따옴표, 쌍 따옴표, 트리플 따옴표로 묶어준다. 즉 코드에서 이들 기호를 만나면 문자열의 시작 또는 끝을 나타내는 기호로 인식한다. 문자열이 한줄인 경우에는 홑 따옴표, 쌍 따옴표, 트리플 따옴표 구분없이 사용 가능하다.

문자열 표현#

  • 문자열을 작성해보자. 홑 따옴표를 포함한 문자열이 출력된다.

'hi'
'hi'
"hello"
'hello'
'''파이썬은 재밌어'''
'파이썬은 재밌어'
"""파이썬은 즐거워"""
'파이썬은 즐거워'
  • 문자열은 문자뿐만 아니라 공백, 숫자, 특수문자를 포함할 수 있다.

'7 apples, 14 oranges, 3 lemons'
'7 apples, 14 oranges, 3 lemons'
'10%2'
'10%2'
'2*6=12'
'2*6=12'

문자열 연산자(String operators)#

문자열도 +, * 연산자를 사용하는 것이 가능하다. 단, 문자열에서 +연산자는 문자열의 나열을 의미하며, *연산자는 문자열의 반복을 의미한다.

연산 기호

의미

예시

실행 결과

+

덧셈(Addition)

'hello' + 'world'

helloworld

*

곱셈(Multiplication)

'hello' * 3

hellohellohello

'파이썬은' + ' ' + '즐거워! '
'파이썬은 즐거워! '
'파이썬은 즐거워! ' * 3
'파이썬은 즐거워! 파이썬은 즐거워! 파이썬은 즐거워! '

문자열과 정수형 데이터의 덧셈(+) 연산도 가능할까?

'hello!' + 5
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-17-4591c08aa452> in <module>
----> 1 'hello!' + 5

TypeError: can only concatenate str (not "int") to str
  • 문자열이 여러줄인 경우, 이를 멀티라인 스트링(multi-line string)이라 부르는데, 이때에는 트리플 따옴표만 사용 가능하다.

  • 만약 아래의 코드처럼 여러줄을 썼다면 전체 문장을 출력하는 것이 아니라 가장 마지막 줄만 출력한다. 이는 단지 코랩에서 제공해주는 기능으로 실행시키는 셀의 마지막 라인을 결과로 되돌려주기 때문이다.

'Hello world'
'How are you?'
'Nice to meet you'
  • 멀티라인 스트링인 경우, print()함수 없이 사용하면 눈에 보이지 않았던 줄바꿈기호 \n가 포함되어 한줄로 출력된다.

"""안녕
반가워
파이썬
"""

마무리#

지금까지 우리는 정수형, 실수형, 문자열 데이터 타입과 이들 데이터 타입에서 사용할 수 있는 주요 연산자를 학습했다. 또한 연산자를 활용하여 수식을 표현하는 방법을 배웠다.

정리하자면,

  • 정수형 데이터는 표현의 범위에 한계가 없다.

  • 실수형 데이터는 표현의 범위에 한계가 있으며, 소수점 표기방법과 지수표기방법이 있다.

  • 문자열을 표현하기 위해서는 문자열의 앞과 뒤에 홑 따옴표(‘), 쌍 따옴표(“), 트리플 따옴표(‘’’ 또는 “””) 기호를 붙인다.

  • 데이터는 그 값의 속성에 따라 타입(형)이 존재하며 프로그래밍에서는 데이터의 타입이 매우 중요하다.

  • 데이터의 타입마다 지원하는 연산이 다르다.


F37.101 컴퓨팅 기초: 처음 만나는 컴퓨팅(First Adventures in Computing) 서울대학교 학부대학 변해선