
- 프로그래밍을 할 때 쓰이는 숫자, 문자열 등과 갈이 자료 형태로 사용하는 모든 것을 뜻함
- 프로그램의 기본이자 핵심 단위
'어떤 프로그래밍 언어이든 그 언어의 자료형을 알고 이해할 수 있다면 이미 그 언어의 절반을 터득한 것이나 다름없다'라는 말이 있다. 자료형을 충분히 이해하지 않고 프로그래밍을 시작하려는 것은 기초 공사가 마무리되지 않은 상태에서 빌딩을 세우는 것과 같다.
- 자료형의 값을 저장하는 공간
- 변수 이름 = 변수에 저장할 값
변수에 대해서는 뒤에서 더 자세히 설명한다. 여기서는 자료형을 설명하기 위한 간단한 설명이다.
a = 1
위 코드에서 a를 변수라고 한다. 변수를 만들 때는 할당 연산자(=)를 사용한다.
숫자 형태로 이루어진 자료형
정수형(Integer) 말 그대로 정수를 뜻하는 자료형
a = 123 # 양의 정수 123을 a에 저장
a = -178 # 음의 정수 -178을 a에 저장
a = 0 # 숫자 0을 a에 저장
실수형(Floating-point)은 소수점이 포함된 숫자
a = 1.2 # 1.2를 a에 저장
a = -3.45
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
파이썬에서도 사칙 연사에 사용하는 산술 연산자를 사용
a = 3
b = 4
print(a + b)
print(a - b)
print(a * b)
print(a / b)
제곱을 나타내는 연산자 x ** y처럼 사용했을 때 x의 y제곱(xy) 값을 리턴
a = 3
b = 4
print(a ** b)
나눗셈의 나머지 값을 려턴
a = 7
b = 3
print(a % b)
print(b % a)
나눗셈 수 몫을 리턴
a = 7
b = 4
print(a / b)
print(a // b)
이때, 7 / 4는 위에서 말했던 산술 연산자의 나눗셈 연산으로 1.75가 나올 것을 예상할 수 있다.
반면, 7 // 4는 값이 다른 것을 볼 수 있다. 이유는 나눗셈의 몫을 리턴하기 때문이다.
문자열(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이 들어 있는데 왜 문자열인가 하는 생각이 들 수 있는데 따옴표로 묶여 있으면 문자열이 된다.
여기서 방법을 다르게 적었다. 문자열을 쓸 수 있는 모든 방법이다.
문자열 안에 큰따옴표, 작은따옴표를 사용해야 할 경우 사용 방법
It's is an apple이라는 문자열을 fruit 변수에 저장하려고 할 때 문자열 중에 작은따옴표가 포함되어 있어 문제가 있다. 문자열에 작은따옴표가 포함되어 있을 때는 큰따옴표로 묶어 주면 된다. 큰따옴표가 있다면 반대로 해주면 된다.
fruit = "It's is an apple"
talk = '"내일 어디 갈까?"'
문자열에 각 따옴표가 포함되어 있는데 이 방법을 사용하지 않으면 구문 오류인 SyntaxError가 발생한다.
fruit = 'It\'s is an apple'
talk = "\"내일 어디 갈까?\""
\을 사용하면 뒤에 나오는 각 따옴표가 문자열 시작의 따옴표가 아니라 따옴표 자체를 뜻한다.
백슬래시는 이스케이프를 의미하는 문자다.
프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 문자 조합 출력물을 보기 좋게 정렬하는 용도로 사용
| 코드 | 설명 |
|---|---|
| \n | 문자열 안에서 줄을 바꿀 때 사용 |
| \t | 문자열 사이에 탭 간격을 줄 때 사용 |
| \\ | \를 그대로 표현할 때 사용 |
| \' | 작은따옴표를 그대로 표현할 때 사용 |
| \" | 큰따옴표를 그대로 표현할 때 사용 |
| \r | 캐리지 리턴(줄 바꿈 문자, 커서를 현재 줄의 가장 앞으로 이동) |
| \f | 폼 피드(즐 바꿈 문자, 커서를 현재 줄의 다음 줄로 이동) |
| \a | 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 남) |
| \b | 백 스페이스 |
| \000 | 널 문자 |
파이썬에서는 문자열을 더하거나 곱할 수 있다.
a = 'I like'
b = ' an apple'
print(a + b)
문자열과 문자열을 더하면 결합하는 것이다.
a = 3
b = 'apple'
print(a + b)
문자열 + 숫자 또는 숫자 + 문자열은 자료형의 타입이 맞지 않아서 류가 난다.
이 오류를 해결하기 위해서는 숫자 3을 문자열로 형변환을 해야 한다.
str() 함수를 사용하면 형변환을 해서 해결할 수 있다.
str() 함수는 매개변수로 설정된 숫자를 문자열로 변환해 주는 함수다.
a = 3
b = ' apple'
print(str(a) + b)
반대로 문자열을 숫자로 변환해서 연산하는 방법이 있다.
a = 3
b = '10'
print(a + int(b))
이때 출력되는 결과값은 숫자형 타입을 가지고 있다.
int() 함수도 str() 함수와 같이 매개변수로 설정된 숫자로 된 문자열을 숫자로 변환해 주는 함수다.
int() 함수는 정수형 타입으로 바꾸는 것이기 때문에 int(123.453)는 타입 변환 오류가 난다.
a = 'I like'
print(a * 2)
출력값을 보면 문자열이 두 번 나오는 것을 볼 수 있다. 연산 그대로 문자열을 곱한 수만큼 반복하는 것이다.
문자열 길이를 구할 때는 len() 항수를 사용
a = 'You need python'
print(lan(a))
- 인덱싱(Indexing)은 무엇인가를 가리킨다는 의미
- 슬라이싱(Slicing)은 무어인가를 잘라 낸다는 의미
a = 'I like an apple'
변수 a에 저장한 문자열을 문자마다 번호를 붙여볼 수 있다.
| I | l | i | k | e | a | n | a | p | p | l | e | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 0 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
a = 'I like an apple'
print(a[5])
a[5]는 a라는 문자열의 여섯 번째 문자 e를 뜻한다. 문자열의 숫자를 0번부터 붙이기 때문이다.
a[번호]는 문자열 안의 특정한 값을 뽑아 내는 역할을 한다. 이러한 작업을 인덱싱이라고 한다.
인덱싱을 할 때 a[2], a[3]으로 하는데 위 표를 보면 -숫자를 적어 둔 것을 볼 수 있다.
-숫자는 a[-1]을 했을 때 마지막 글자인 'e'를 반환한다. 문자열을 뒤에서부터 읽기 위해 붙이는 것이다.
이때 -0과 0은 똑같은 것이기 때문에 제일 앞에 있는 문자를 가리킨다.
인덱싱은 번호에 해당하는 한 자리의 문자를 반환하지만 슬라이싱은 범위를 정해 문자열을 반환받는다.
a = 'I like an apple'
print(a[0:5])
a = 'I like an apple'
print(a[0:4])
위 두 예제를 보면 0부터 4까지, 0부터 5까지 반환받아야 하는데 그렇지 않다.
이유는 슬라이싱 기법으로 a[시작 번호 : 끝 번호]를 지정할 때 끝 번호에 해당하는 문자는 포함하지 않기 때문이다.
a = 'I like an apple'
print(a[5:])
a = 'I like an apple'
print(a[:9])
a = 'I like an apple'
print(a[:])
슬라이싱으로 문자열을 나눌 수 있다.
a = "20240101Sunny"
year = a[:4]
day = a[4:8]
weather = a[8:]
print(year)
print(day)
print(weather)
a는 하나의 문자열이지만 슬라이싱을 사용하면 문자열을 나눠서 사용할 수 있다.
문자열 안의 특정한 값을 바꿔야 할 경우가 일을 때 문자열 안에 어떤 값을 삽입하는 방법
문자열 안에 정수 3을 삽입하는 방법
a = "I have %d dogs" % 3
print(a)
숫자를 넣고 싶은 자리에 %d 문자를 넣고 숫자 3은 가장 뒤에 % 문자 다음에 쓴다.
문자열 안에 문자열 넣은 방법
a = "I have %s dogs" % three
print(a)
문자열을 넣고 싶다면 %s를 사용한다.
number = 3
a = "I have %d dogs" % number
print(a)
dogs = 3
cats = 'three'
a = "I have %d dogs and %s cats." % (number, three)
print(a)
두 개 이상의 값을 넣으려면 마지막 % 다음에 괄호 안에 쉼표로 구분하여 각각의 값을 넣어 준다.
| 코드 | 설명 |
|---|---|
| %s | 문자열(string) |
| %c | 문자 1개(character) |
| %d | 정수(integer) |
| %f | 부동소수(floating-point) |
| %o | 8진수 |
| %x | 16진수 |
| %% | Literal %(문자 % 자체) |
a = "I have %s dogs" % 3
print(a)
a = "파이는 %s다." % 3.14
print(a)
문자열 안에 정수를 사용할 때는 %d, 소수를 사용할 때는 %f를 사용해야 한다. 하지만 위 예제와 같이 %s를 사용해도 오류없이 잘 된다. 그 이유는 %s는 % 뒤에 있는 숫자, 소수를 문자열로 바꾸어 대입하기 때문이다.
a = "%10s" % "hi"
print(a)
a = "%-10sjin" % "hi"
print(a)
a = "%0.4f" % 3.141592
print(a)
a = "I have {0} dogs".format(3)
print(a)
문자열 대입, 변수 대입, 2개 이상 값 대입 등은 위에서 봤던 방법과 동일하다.
a = "{0:<10}" "hi"
print(a)
a = "{0:>10}" "hi"
print(a)
a = "{0:^10}" "hi"
print(a)
a = "{0:=^10}" "hi"
print(a)
a = "{0:!<10}" "hi"
print(a)
- 파이썬 3.6 버전부터 f 문자열 포매팅 기능 제공
- 문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 가능 사용 가능
name = '고길동'
age = 25
print(f"이름은 {name}, 나이는 {age}입니다.")
name = '고길동'
age = 25
print(f"이름은 {name}, 나이는 {age} 입니다. 내년에 {age+1} 됩니다.")
함수를 다른 말로 '문자열 내장 함수'라고 한다. 내장 함수를 사용하려면 문자열 변수 이름 뒤에 '.'을 붙인 후 함수 이름을 써 주면 된다.
a = "lbigdbfjeowblk"
print(a.count('b'))
a = "lbigdbfjeowblk"
print(a.find('b'))
a = "lbigdbfjeowblk"
print(a.index('b'))
print('a', 'b', 'c', sep = '|', end = "...")
a = input()
print(a)
input 함수로 a에 저장하게 되면 사용자에게 키보드로 입력을 받을 수 있다. 입력받은 데이터의 타입은 str타입이다.