1. 자료형이란?

  • 프로그래밍을 할 때 쓰이는 숫자, 문자열 등과 갈이 자료 형태로 사용하는 모든 것을 뜻함
  • 프로그램의 기본이자 핵심 단위

'어떤 프로그래밍 언어이든 그 언어의 자료형을 알고 이해할 수 있다면 이미 그 언어의 절반을 터득한 것이나 다름없다'라는 말이 있다. 자료형을 충분히 이해하지 않고 프로그래밍을 시작하려는 것은 기초 공사가 마무리되지 않은 상태에서 빌딩을 세우는 것과 같다.


1) 변수

  • 자료형의 값을 저장하는 공간
  • 변수 이름 = 변수에 저장할 값

변수에 대해서는 뒤에서 더 자세히 설명한다. 여기서는 자료형을 설명하기 위한 간단한 설명이다.

a = 1

위 코드에서 a를 변수라고 한다. 변수를 만들 때는 할당 연산자(=)를 사용한다.


2. 숫자형

숫자 형태로 이루어진 자료형

1) 정수형

정수형(Integer) 말 그대로 정수를 뜻하는 자료형

a = 123			# 양의 정수 123을 a에 저장 
a = -178		# 음의 정수 -178을 a에 저장
a = 0			# 숫자 0을 a에 저장

2) 실수형

실수형(Floating-point)은 소수점이 포함된 숫자

a = 1.2			# 1.2를 a에 저장
a = -3.45

3) 8진수, 16진수

8진수(Octal)를 만들기 위해서는 숫자가 (숫자 0 + 알파벳 소문자 o 또는 대문자 O)로 시작

a = 0o177
print(a)

위 a에 저장된 8진수의 값 1 x 82 + 7 x 8 + 7 = 127

16진수(Hexadecimal)를 만들기 위해서는 0x로 시작

a = 0xABC
print(a)

위 a에 저장된 16진수의 10 x 162 + 11 X 16 + 12 = 2748

4) 연산자


(1) 산술 연산자

파이썬에서도 사칙 연사에 사용하는 산술 연산자를 사용

a = 3
b = 4
print(a + b)
print(a - b)
print(a * b)
print(a / b)
  • 출력  :  a + b = 7, a - b = -1, a * b = 12, a / b = 0.75

(2) ** 연산자

제곱을 나타내는 연산자 x ** y처럼 사용했을 때 x의 y제곱(xy) 값을 리턴

a = 3
b = 4
print(a ** b)
  • 출력  :  81
    34가 되어 81이 된다.

(3) % 연산자

나눗셈의 나머지 값을 려턴

a = 7
b = 3
print(a % b)
print(b % a)
  • 출력  :  7 % 3 = 1, 3 % 7 = 3

(4) // 연산자

나눗셈 수 몫을 리턴

a = 7
b = 4
print(a / b)
print(a // b)
  • 출력  :  7 / 4 = 1.75, 7 // 4 = 1

이때, 7 / 4는 위에서 말했던 산술 연산자의 나눗셈 연산으로 1.75가 나올 것을 예상할 수 있다.
반면, 7 // 4는 값이 다른 것을 볼 수 있다. 이유는 나눗셈의 몫을 리턴하기 때문이다.


3. 문자열

문자열(String)은 문자, 단어 등으로 구성된 문자들의 집합

a = """Life is too short, You need Python"""
b = """
Life is
too short, you need
Python
"""
c = '''가나다라마바사아'''
d = '''가나다라
마바사아
'''
e= "a"
f = '123'

위 예문들은 모두 문자열이다. d에는 123이 들어 있는데 왜 문자열인가 하는 생각이 들 수 있는데 따옴표로 묶여 있으면 문자열이 된다.
여기서 방법을 다르게 적었다. 문자열을 쓸 수 있는 모든 방법이다.

  • a = 큰따옴표 3개를 연속으로 사용
  • b = 큰따옴표 3개를 연속으로 사용하면 여러 줄에 걸쳐 사용 가능, 출력도 여러 줄에 나뉘어서 출력
  • c = 작은따옴표 3가를 연속으로 사용
  • d = 작은따옴표 3개를 연속으로 사용하면 여러 줄에 걸쳐 사용 가능, 출력도 여러 줄에 나뉘어서 출력
  • e = 큰따옴표로 묶음
  • f = 작은따옴표로 묶음

1) 문자열에 큰따옴표, 작은따옴표 포함

문자열 안에 큰따옴표, 작은따옴표를 사용해야 할 경우 사용 방법

It's is an apple이라는 문자열을 fruit 변수에 저장하려고 할 때 문자열 중에 작은따옴표가 포함되어 있어 문제가 있다. 문자열에 작은따옴표가 포함되어 있을 때는 큰따옴표로 묶어 주면 된다. 큰따옴표가 있다면 반대로 해주면 된다.

fruit = "It's is an apple"
talk = '"내일 어디 갈까?"'

문자열에 각 따옴표가 포함되어 있는데 이 방법을 사용하지 않으면 구문 오류인 SyntaxError가 발생한다.

(1) \(백슬래시) 사용

fruit = 'It\'s is an apple'
talk = "\"내일 어디 갈까?\""

\을 사용하면 뒤에 나오는 각 따옴표가 문자열 시작의 따옴표가 아니라 따옴표 자체를 뜻한다.

백슬래시는 이스케이프를 의미하는 문자다.

(2) 이스케이프 코드

프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 문자 조합 출력물을 보기 좋게 정렬하는 용도로 사용


코드 설명
\n문자열 안에서 줄을 바꿀 때 사용
\t문자열 사이에 탭 간격을 줄 때 사용
\\\를 그대로 표현할 때 사용
\'작은따옴표를 그대로 표현할 때 사용
\"큰따옴표를 그대로 표현할 때 사용
\r캐리지 리턴(줄 바꿈 문자, 커서를 현재 줄의 가장 앞으로 이동)
\f폼 피드(즐 바꿈 문자, 커서를 현재 줄의 다음 줄로 이동)
\a벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 남)
\b백 스페이스
\000널 문자
  • 활용 반도가 높은 것은 \n, \t, \\, \', \" 다.

2) 연산

파이썬에서는 문자열을 더하거나 곱할 수 있다.


(1) 덧셈

a = 'I like'
b = ' an apple'
print(a + b)
  • 출력  :  I like an apple

문자열과 문자열을 더하면 결합하는 것이다.


a = 3
b = 'apple'
print(a + b)

문자열 + 숫자 또는 숫자 + 문자열은 자료형의 타입이 맞지 않아서 류가 난다.

이 오류를 해결하기 위해서는 숫자 3을 문자열로 형변환을 해야 한다.
str() 함수를 사용하면 형변환을 해서 해결할 수 있다.
str() 함수는 매개변수로 설정된 숫자를 문자열로 변환해 주는 함수다.

a = 3
b = ' apple'
print(str(a) + b)
  • 출력  :  3 apple

반대로 문자열을 숫자로 변환해서 연산하는 방법이 있다.


a = 3
b = '10'
print(a + int(b))
  • 출력  :  13

이때 출력되는 결과값은 숫자형 타입을 가지고 있다.
int() 함수도 str() 함수와 같이 매개변수로 설정된 숫자로 된 문자열을 숫자로 변환해 주는 함수다.
int() 함수는 정수형 타입으로 바꾸는 것이기 때문에 int(123.453)는 타입 변환 오류가 난다.

(2) 곱셈

a = 'I like'
print(a * 2)
  • 출력  :  I likeI like

출력값을 보면 문자열이 두 번 나오는 것을 볼 수 있다. 연산 그대로 문자열을 곱한 수만큼 반복하는 것이다.


3) 길이

문자열 길이를 구할 때는 len() 항수를 사용

a = 'You need python'
print(lan(a))
  • 출력  :  15
  • 띄어쓰기 포함

4) 인덱싱, 슬라이싱

  • 인덱싱(Indexing)은 무엇인가를 가리킨다는 의미
  • 슬라이싱(Slicing)은 무어인가를 잘라 낸다는 의미

(1) 인덱싱

a = 'I like an apple'

변수 a에 저장한 문자열을 문자마다 번호를 붙여볼 수 있다.

Ilikeanapple
01234567891011121314
0-14-13-12-11-10-9-8-7-6-5-4-3-2-1
  • 숫자를 붙일 때 0부터 붙인다는 것을 주의
a = 'I like an apple'
print(a[5])
  • 출력  :  e

a[5]는 a라는 문자열의 여섯 번째 문자 e를 뜻한다. 문자열의 숫자를 0번부터 붙이기 때문이다.
a[번호]는 문자열 안의 특정한 값을 뽑아 내는 역할을 한다. 이러한 작업을 인덱싱이라고 한다.

인덱싱을 할 때 a[2], a[3]으로 하는데 위 표를 보면 -숫자를 적어 둔 것을 볼 수 있다.
-숫자는 a[-1]을 했을 때 마지막 글자인 'e'를 반환한다. 문자열을 뒤에서부터 읽기 위해 붙이는 것이다.
이때 -0과 0은 똑같은 것이기 때문에 제일 앞에 있는 문자를 가리킨다.

(2) 슬라이싱

인덱싱은 번호에 해당하는 한 자리의 문자를 반환하지만 슬라이싱은 범위를 정해 문자열을 반환받는다.


a = 'I like an apple'
print(a[0:5])
  • 출력  :  I lik
  • 수식  :  0<= a < 5

a = 'I like an apple'
print(a[0:4])
  • 출력  :  I li
  • 수식  :  0<= a < 4

위 두 예제를 보면 0부터 4까지, 0부터 5까지 반환받아야 하는데 그렇지 않다.
이유는 슬라이싱 기법으로 a[시작 번호 : 끝 번호]를 지정할 때 끝 번호에 해당하는 문자는 포함하지 않기 때문이다.


  • a[시작 번호 : 끝 번호]에서 끝 번호를 생략하면 시작 번호부터 문자열의 끝까지 반환한다.
a = 'I like an apple'
print(a[5:])
  • 출력  :  e an apple

  • a[시작 번호 : 끝 번호]에서 시작 번호를 생략하면 처음 번호부터 문자열의 끝까지 반환한다.
a = 'I like an apple'
print(a[:9])
  • 출력  :  I like an

  • a[시작 번호 : 끝 번호]에서 시작 번호화 끝 번호를 생략하면 문자열의 처음부터 끝까지 반환한다.
a = 'I like an apple'
print(a[:])
  • 출력  :  I like an apple

슬라이싱으로 문자열을 나눌 수 있다.

a = "20240101Sunny"
year = a[:4]
day = a[4:8]
weather = a[8:]
print(year)
print(day)
print(weather)
  • 출력
    - 2024
    - 0101
    - Sunny

a는 하나의 문자열이지만 슬라이싱을 사용하면 문자열을 나눠서 사용할 수 있다.


5) 포매팅

문자열 안의 특정한 값을 바꿔야 할 경우가 일을 때 문자열 안에 어떤 값을 삽입하는 방법

(1) 숫자 바로 대입

문자열 안에 정수 3을 삽입하는 방법


a = "I have %d dogs" % 3
print(a)
  • 출력  :  I have 3 dogs.

숫자를 넣고 싶은 자리에 %d 문자를 넣고 숫자 3은 가장 뒤에 % 문자 다음에 쓴다.

(2) 문자열 바로 대입

문자열 안에 문자열 넣은 방법


a = "I have %s dogs" % three
print(a)
  • 출력  :  I have three dogs.

문자열을 넣고 싶다면 %s를 사용한다.

(3) 변수로 대입

number = 3
a = "I have %d dogs" % number
print(a)
  • 출력  :  I have 3 dogs.

dogs = 3
cats = 'three'
a = "I have %d dogs and %s cats." % (number, three) 
print(a)
  • 출력  :  I have 3 dogs and three cats.

두 개 이상의 값을 넣으려면 마지막 % 다음에 괄호 안에 쉼표로 구분하여 각각의 값을 넣어 준다.

(4) 문자열 포맷 코드

코드설명
%s문자열(string)
%c문자 1개(character)
%d정수(integer)
%f부동소수(floating-point)
%o8진수
%x16진수
%%Literal %(문자 % 자체)

a = "I have %s dogs" % 3
print(a)
  • 출력  :  I have 3 dogs.

a = "파이는 %s다." % 3.14
print(a)
  • 출력  :  파이는 3.14다.

문자열 안에 정수를 사용할 때는 %d, 소수를 사용할 때는 %f를 사용해야 한다. 하지만 위 예제와 같이 %s를 사용해도 오류없이 잘 된다. 그 이유는 %s는 % 뒤에 있는 숫자, 소수를 문자열로 바꾸어 대입하기 때문이다.

(5) 포맷 코드와 숫자 함께 사용

a = "%10s" % "hi"
print(a)
  • 출력  :  '        hi'
  • 10%s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미 즉, hi 앞에 8개의 공백이 있음

a = "%-10sjin" % "hi"
print(a)
  • 출력  :  'hi        jin'
  • -10%s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 왼쪽 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미 즉, hi 뒤에 8개의 공백 후 jin이 출력

a = "%0.4f" % 3.141592
print(a)
  • 출력  :  3.1416
  • 소수점 네 번째 자리까지만 나타내고 싶은 경우 사용

(6) format 함수를 사용한 포매팅

a = "I have {0} dogs".format(3)
print(a)
  • 출력  :  I have 3 dogs.
  • 문자열의 {0} 부분이 3으로 바뀜

문자열 대입, 변수 대입, 2개 이상 값 대입 등은 위에서 봤던 방법과 동일하다.


a = "{0:<10}"  "hi"
print(a)
  • 출력  :  'hi        '
  • 왼쪽 정렬, 문자열 총 자릿수 10

a = "{0:>10}"  "hi"
print(a)
  • 출력  :  '        hi'
  • 오른쪽 정렬, 문자열 총 자릿수 10

a = "{0:^10}"  "hi"
print(a)
  • 출력  :  '    hi    '
  • 가운데 정렬, 문자열 총 자릿수 10

a = "{0:=^10}"  "hi"
print(a)
  • 출력  :  '====hi===='
  • 가운데 정렬, 공백 =로 채우기, 문자열 총 자릿수 10

a = "{0:!<10}"  "hi"
print(a)
  • 출력  :  'hi!!!!!!!!'
  • 왼쪽 정렬, 공백 !로 채우기, 문자열 총 자릿수 10

(7) f 문자열 포매팅

  • 파이썬 3.6 버전부터 f 문자열 포매팅 기능 제공
  • 문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 가능 사용 가능

name = '고길동'
age = 25
print(f"이름은 {name}, 나이는 {age}입니다.")
  • 출력  :  이름은 고길동, 나이는 25입니다.
  • 변숫값을 생성한 수 그 값을 참조할 수 있다.

name = '고길동'
age = 25
print(f"이름은 {name}, 나이는 {age} 입니다. 내년에 {age+1} 됩니다.")
  • 출력  :  이름은 고길동, 나이는 25 입니다. 내년에 26 됩니다.
  • f 문자열 포매팅은 표현식을 지원하기 때문에 중괄호 안의 변수를 계산식과 함께 사용할 수 있다.

(8) 관련 함수

함수를 다른 말로 '문자열 내장 함수'라고 한다. 내장 함수를 사용하려면 문자열 변수 이름 뒤에 '.'을 붙인 후 함수 이름을 써 주면 된다.


  • count 함수로 문자열 중 문자 b의 개수를 리턴
a = "lbigdbfjeowblk"
print(a.count('b'))
  • 출력  :  3

  • find 함수로 문자열이 처음 나온 위치 리턴
a = "lbigdbfjeowblk"
print(a.find('b'))
  • 출력  :  1

  • indxe 함수로 find와 마찬가지로, 찾는 문자열이 처음 나온 위치 리턴
  • 단, 찾는 문자열이 없으면 오류 발생
a = "lbigdbfjeowblk"
print(a.index('b'))
  • 출력  :  1

  • upper() - 소문자를 대문자로 바꾸기
  • lower() - 대문자를 소문자로 바꾸기
  • lstrip() - 왼쪽 공백 지우기
  • rstrip() - 오른쪽 공백 지우기
  • strip() - 양쪽 공백 지우기
  • replace() - 문자열 바꾸기 replace(바뀔_문자열, 바꿀 문자열)
  • split() - 문자열 나누기 - 공백 또는 특정 문자열을 구분자로 해서 문자열 분리, 분리된 문자열은 리스트로 반환됨

  • print() - 사람이 읽을 수 있는 형태로 문자열 출력
print('a', 'b', 'c', sep = '|', end = "...")
  • 출력  :  a|b|c...
  • sep는 주어진 옵션(|)으로 출력할 문자들을 어떻게 구분할지를 정하는 것이다. 기본 설정은 공백
  • end는 주이진 옵션(...)으로 바꾸면 마지막에 ...이 들어가게 된다. 이때 ...은 단순 문자로 들어간다. 기본 설정은 \n 개행문자

  • input() - 키보드에서 한 줄의 텍스트를 읽어들임
a = input()
print(a)

input 함수로 a에 저장하게 되면 사용자에게 키보드로 입력을 받을 수 있다. 입력받은 데이터의 타입은 str타입이다.

profile
engeon.tistory.com

0개의 댓글