본 포스팅은 책 「두근두근 파이썬」을 참고하여 공부한 내용의 정리본입니다.
이전 게시글
두근두근 파이썬 Chapter 2 변수와 연산자 (2)
2021/01/07 - [Programming/#Python] - [Python] 두근두근 파이썬 Chapter 2 변수와 연산자 (1) (실습 결과 포함)
0. 들어가며
이전 포스팅에서는 출력 함수에 변수의 개념을 더해 일반적인 값을 이용하는 경우보다 좀 더 효율적인 스크립트를 구성해보았다. 더불어 변수가 할당되는 공간인 메모리에 대해 이해하고 각각을 고유하게 구별하기 위한 식별자의 규칙에 대해서도 다뤄보았다. 이번 포스팅에서는 변수를 활용한 연산을 위해 다양한 연산자와 변수의 자료형에 대해 다뤄볼 것이다.
1. 변수와 연산자
이전 포스팅에서 다룬 것과 같이, 어떤 값을 변수에 할당하기 위해서는 '=' 이라는 할당 연산자를 사용한다. 아래의 명령에서는 age라는 변수를 선언 (declare)함으로써 27이라는 정수 객체 (프로그램상의 데이터와 함수를 가질 수 있는 자료)를 할당하였으므로, age는 정수 27을 참조한다.
>>> age = 27 >>> age 27
이때 할당 연산자 (assignment operator)를 기준으로 왼 편에는 변수 명이, 오른 편에는 참조할 값이 위치해야 한다. 따라서 아래와 같은 명령은 구문 오류 (syntex error)를 초래한다.
>>> 27 = age File "<stdin>", line 1 SyntexError: can't assign to literal
산술 연산자 (mathematical operation)
컴퓨터의 자료 값은 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산이 가능하다. 이를 위해 파이썬에서는 풍부한 연산자를 제공한다. 대표적으로 숫자 값에 대해 사칙 연산, 나머지 연산, 제곱 연산을 수행할 수 있다.
# 산술 연산자를 활용한 파이썬 계산기 >>> 4 + 10 # 덧셈 14 >>> 4.0 - 1.0 # 뺄셈 3.0 >>> 20 * 20 # 곱셈 400 >>> 11 / 2 # 나눗셈 5.5 >>> 11 // 2 # 정수 나눗셈 5 >>> 11 % 2 # 나머지 연산 1 >>> 4 ** 0.5 # 거듭제곱 연산 2.0 >>> 4 ** 5 # 제곱 연산 1024
LAB 2-7: 파이썬 연산자의 사용
# 문제 2 >>> 5 % 2 1 >>> 2 ** 0.5 1.4142135623730951 >>> 3 ** 0.5 1.7320508075688772
문자열과 정수의 덧셈 연산
위의 연산자들은 특정한 자료형에서만 사용이 가능하다. 가령, 아래 명령과 같이 문자열 형 변수에 숫자를 더하는 연산은 TypeError라는 오류를 초래한다.
>>> my_age = 22 >>> my_height = '177' >>> my_age = my_age + 1 >>> my_height = my_height + 1 >>> print(my_age, my_height) TypeError: must be str, not int
실수와 정수의 덧셈 연산
반면, 아래와 같이 정수와 실수 간의 사칙연산은 정상적으로 작동한다. 이때, 정수 나눗셈 연산과 나머지 연산은 정수형 자료에 대해서만 적용 가능하며, 거듭 제곱 연산은 정수, 실수 모두 적용 가능하다.
>>> my_age = 22 >>> my_height = 177.5 >>> my_age = my_age + 1 >>> my_height = my_height + 1 >>> print(my_age, my_height) 23 178.5
2. 자료형의 의미와 자료형 확인
자료형 (data type)이란 프로그래밍 언어에서 처리 가능한 데이터의 유형을 말한다. 이러한 자료형에는 기본적으로 부울(bool)형, 숫자(정수, 실수, 복소수)형, 문자열, 리스트, 튜플, 집합, 딕셔너리가 존재하며, 그 종류는 type() 함수를 통해 판별할 수 있다.
>>> num = 85 >>> type(num) <class 'int'> >>> pi = 3.14159 >>> type(pi) <class 'float'> >>> message = 'Good morning' >>> type(message) <class 'str'>
위 코드에서는 num, pi, message 라는 각각의 변수에 정수형(int), 실수형(float), 문자열 (str)을 할당한 후 type() 함수로 그 자료형을 판별하였다. 이때, 각각의 변수에 특정 자료형이 할당되는 순간 자료형이 결정되는데 이와 같은 자료형 결정 방식을 동적 형결정 (dynamic typing)이라고 한다.
동적 (dynamic) 형결정과 정적(static) 형결정
파이썬, Ruby, JavaScript 등이 따르고 있는 동적 형결정은 프로그램이 실행되는 도중에 자료형이 스스로 결정되기 때문에 전체적인 동작이 유연하다는 장점이 있다. 가령, 파이썬은 다른 언어와 달리 각 변수의 자료형을 일일이 지정해주지 않아도 적절한 공간에 알아서 저장한다. 이에 따라 아래 예제에서 변수 foo는 정수형 객체 '100'을 참조하다가 다시 'Hello'라는 문자열 형 객체를 참조하고 있다.
# 동적 형 결정의 예시 >>> foo = 100 >>> type(foo) <class 'int'> >>> foo = 'Hello' >>> type(foo) <class 'str'>
반면, C, C++, C#, JAVA 등의 경우 컴파일 시점에 자료형을 결정하는 정적 형결정을 따른다. 이들 언어는 프로그램 실행 전에 자료형을 일일이 명시해주어야 하지만, 연산이 불가한 데이터를 할당하는 경우와 같이 잘못된 동작을 소스코드 해석 단계에서 걸러낼 수 있다는 장점이 있다.
이외에도 파이썬은 다양한 자료형을 제공한다. 대표적으로 아래 예제와 같이 리스트, 딕셔너리, 튜플 등이 있다.
>>> l = [100, 300, 500, 900] >>> type(l) <class 'list'> >>> d = {'apple': 3000, 'banana': 4000} >>> type(d) <class 'dict'> >>> t = ('홍길동', 30, '율도국의 왕') >>> type(t) <class 'tuple'>
문자열 변환 함수 str()
str() 함수는 인수로 받는 값에 대하여 문자열 형으로 변환시켜주는 함수이다. 아래 예제와 같이 정수형, 실수형, 리스트의 인자에 대해 따옴표로 둘러쌓인 문자열 형으로 변환해준다.
>>> str(100) '100' >>> str(123.5) '123.5' >>> x = ['A', 'B', 'C'] >>> str(x) "['A', 'B', 'C']"
3. 문자열(string) 자료형
문자열(string)이란 연속된 문자로 이루어진 자료형을 말한다. 파이썬에서는 하나의 문자와 여러 문자로 구성된 문자열을 동일하게 취급한다. 이때, 문자열 자료형은 따옴표를 붙임으로써 구별되는데 이러한 표기법에는 몇 가지 규칙이 있다.
>>> txt1 = '강아지 이름은 "햇님"이야.' >>> txt1 '강아지 이름은 "햇님"이야.' >>> txt2 = "강아지 이름은 '햇님'이야." >>> txt2 "강아지 이름은 '햇님'이야."
위의 예제는 문자열에서 따옴표 안에 따옴표를 삽입하는 경우이다. 이런 경우, 사용하는 따옴표의 종류(큰 따옴표, 작은 따옴표)는 구별되어야 한다. 만일 이런 법칙이 지켜지지 않는다면 구문오류가 발생하기 때문에 같은 종류의 따옴표를 사용하고 싶을 때는 \"~\"와 같이 사용해야 한다.
>>> txt3 = "친구가 "햇님이 좋아!"라고 말했다." SyntaxError: invalid syntax >>> txt3 = "친구가 \"햇님이 좋아!\"라고 말했다" >>> txt3 "친구가 "햇님이 좋아!"라고 말했다."
이스케이프(escape) 문자
문자열의 경우 둘 이상의 문자가 연속해서 나타나더라도 이를 하나로 간주해 출력하며, 줄바꿈 문자를 포함한 경우에도 단순 연속적인 문자로 간주한다. 따라서 문자열의 정확한 구분을 위해서는 다음과 같이 이스케이프 문자 <\n>을 삽입하여 별도로 줄바꿈을 명시해주어야 한다.
>>> txt4 = 'Hello ''Python' >>> txt4 'Hello Python' >>> txt5 = 'banana\napple\norange' >>> txt5 'banana\napple\norange' >>> print(txt5) banana apple orange
이때, 이스케이프 문자의 기능은 파이썬 대화창에서 바로 실행할 경우 문자열 그대로 인식되어 출력되고, print() 함수에 입력되는 경우에만 제 기능을 수행한다. 이때 이스케이프 문자로는 줄바꿈을 수행하는 <\n> 이외에도 탭 문자를 삽입하는 기능의 <\t>도 있다.
따옴표 3개로 둘러싸는 방법
아래 예제와 같이 문자열 데이터를 따옴표 3개(''')로 둘러싸주면, 이스케이프 문자 없이도 줄바꿈을 표현할 수 있고 종류가 다른 따옴표를 동시에 포함한 문장을 사용할 수 있다.
>>> txt6 = '''Let's go''' >>> txt6 "Let's go" >>> txt7 = '''큰 따옴표(")와 작은 따옴표(')를 모두 포함한 문장''' >>> txt7 '큰 따옴표(")와 작은 따옴표(')를 모두 포함한 문장' ''' >>> long_str = """사과는 맛있어 맛있으면 바나나 """ >>> long_str '사과는 맛있어\n맛있으면 바나나\n' # 변수 입력으로 문자열을 출력하는 경우에는 따옴표와 함게 출력됨 >>> print(long_str) 사과는 맛있어 맛있으면 바나나 # print() 함수로 문자열을 출력하는 경우에는 따옴표 없이 값만 출력됨
다음 게시글
두근두근 파이썬 Chapter 2 변수와 연산자 (3)
2021/01/09 - [Programming/#Python] - [Python] 두근두근 파이썬 Chapter 2 변수와 연산자 (fin) (실습 결과 포함)
I'm a Senior Student in Data Science !
데이터 사이언스를 공부하고 있는 4학년 학부생의 TIL 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)
'Programming > #Python' 카테고리의 다른 글
[Python] 제어문 (1) (실습 결과 포함) (0) | 2021.01.10 |
---|---|
[Python] 변수와 연산자 (fin) (실습 결과 포함) (0) | 2021.01.09 |
[Python] 변수와 연산자 (1) (실습 결과 포함) (0) | 2021.01.07 |
[Python] 파이썬 기초 (실습 결과 추가) (0) | 2021.01.06 |
[Python] 모듈과 그래픽 객체 (0) | 2019.11.08 |