숫자형
- 숫자형(Number)은 숫자 형태로 이루어진 자료형이다.
- 123 같은 정수와 12.34 같은 실수 그리고 8진수와 16진수가 있다.
8진수와 16진수
8진수(Octal)를 만들기 위해서는 숫자가 0o 또는 0O (숫자 0 + 알파벳 o 소문자 혹은 대문자)로 시작하면 된다.
a = 0o177
16진수(Hexadecimal)를 만들기 위해서는 0x (숫자 0 + 알파벳 x)로 시작하면 된다.
b = 0x8ff
c = 0xABC
사칙연산
a = 2
b = 4
a + b
# 6
a - b
# - 2
a * b
# 8
a / b
# 0.5
나눗셈 후 나머지를 반환하는 % 연산자
7 % 3
# 1
3 % 7
# 3
# 나눗셈 후 나머지를 반환
나눗셈 후 몫을 반환하는 // 연산자
7 / 4
# 1.75
# 나눗셈 후 몫를 반환
7 // 4
# 1
# 나눗셈 후 몫를 정수값만 반환
문자열 자료형
- 문자열(String)은 문자, 단어 등으로 구성된 문자들의 집합을 의미한다.
"Life is too short, You need Python"
" 1234 "
Python에서 문자열을 만드는 방법
# 큰 따옴표(")로 둘러싸기
"Hello World"
# 작은 따옴표(')로 둘러싸기
'Python'
# 큰 따옴표 3개(""")를 연속으로 써서 둘러싸기
"""Life is too short, You need Python"""
# 작은 따옴표 3개(''')를 연속으로 써서 둘러싸기
'''"Life is too short, You need Python'''
# 문자열에 작은 따옴표(') 포함시키기
# 큰 따옴표(")로 둘러싸고 작은따옴표를 작성하면 문자열을 나타내기 위한 기호로 인식되지 않는다.
"Python's favorite food is perl"
# 문자열에 큰 따옴표(") 포함시키기
# 위와 반대로 문자열을 작은 따옴표(')로 둘러싸면 된다.
easy = '"Python is very easy." he says.'
# 백슬래시(\)를 사용해서 작은 따옴표, 큰 따옴표를 문자열에 포함시키기
say = "\"Python is very easy.\" he says."
줄을 바꾸기 위한 이스케이프 코드(\n) 삽입하기
multiline = "Life is too short\\nYou need python"
연속된 작은 따옴표 3개 혹은 큰 따옴표 3개 사용하기
>>> multiline='''
... Life is too short
... You need python
... '''
>>> multiline="""
... Life is too short
... You need python
... """
# print를 사용해서 출력값을 보면 동일하다
>>> print(multiline)
Life is too short
You need python
이스케이프 코드
- 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 “문자 조합”이다.
- 출력물을 보기 좋게 정렬하는 용도로 사용한다.
\n | 문자열 안에서 줄바꿈을 위해 사용 |
\t | 문자열 사이에 탭 간격을 줄 때 사용 |
\\ | 문자 백슬래시(\)를 그대로 표현할 때 사용 |
\’ | 작은따옴표(’)를 그대로 표현할 때 사용 |
\” | 큰따옴표(”)를 그대로 표현할 때 사용 |
\r | 캐리지 리턴( 줄 바꿈 문자, 현재 커서를 갖아 앞으로 이동 |
\f | 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동 |
\a | 벨 소리(출력할 때 PC 스피커에서 ‘삑’소리가 난다 |
\b | 백 스페이스 |
\000 | 널 문자 |
이 중에서 활용빈도가 높은 것은 \n부터 \"까지 이다.
문자열 연산
- Python에서는 String을 더하거나 곱할 수 있다.
- 다른 언어에서는 쉽게 찾아볼 수 없는 재미있는 기능이다.
문자열을 더하기 (연결하기)
head = "Python"
tail = " is fun !"
head + tail
'Python is fun !'
문자열을 곱하기
a = "파이썬 코딩테스트"
print(a * 2)
'파이썬 코딩테스트파이썬 코딩테스트'
- *의 의미는 일반적으로 숫자 곱하기의 의미와는 다르다.
- 문자열의 반복을 뜻하는 의미로 사용되었다.
- 매우 직관적이다.
문자열의 길이 구하기
a = "코딩테스트 파이썬"
print(len(a))
9
문자열 인덱싱과 슬라이싱
- 인덱싱(Indexing) : 무엇인가를 "가리킨다"는 의미
- 슬라이싱(Slicing) : 무엇인가를 "잘라낸다"는 의미
a = "Life is too short"
print(a[3])
e
- Python은 0부터 숫자를 센다.
- 따라서 다음과 같이 위 문자열을 바라보고 있다.
a[0] : 'L',
a[1] : 'i',
a[2] : 'f',
a[3] : 'e'
a[4] : ' ',
a[5] : 'i'
a[6] : 's'
...
문자열 인덱싱(Indexing) 활용하기
a = "Life is too short"
print(a[0])
print(a[10])
print(a[-1])
L
o
t
- a[-1]의 마이너스(-)는 문자열을 뒤에서부터 읽기 위해서 기호를 붙인 것이다.
- 뒤에서부터 첫 번째 문자인 t를 반환한 것이다.
a = "Life is too short"
print(a[0])
print(a[-0])
print(a[-2])
print(a[-3])
L
L
r
o
- a[-0] 이라고 하지 않은 이유는 a[0]이나 a[-0]이 똑같은 것이기 때문이다.
- 숫자 0은 +, - 구분이 없기 때문이다.
문자열 슬라이싱 활용하기
- "Life is too short"와 같은 문장에서 단어 단위로 뽑아내고 싶을 때
a = "Life is too short"
b = a[0] + a[1] + a[2] + a[3]
print(b)
print(a[0:4])
Life
Life
- a[0] + a[1] + a[2] + a[3] 와 같이 단순하게 접근해도 되지만 더 간단하게 처리할 수 있는 방법이 있다.
- a[0:4] 인덱스 번호 0부터 번호 4까지의 문자를 뽑아낸다는 뜻이다.
a = "Life is too short"
print(a[0:3])
print(a[0:4])
Lif
Life
- <헷갈릴만한 점> a[시작 번호: 끝 번호]를 지정할 때 끝 번호에 해당하는 것은 포함하지 않는다.
- a[3]는 'e'이지만 a[0:3]을 통해서 결과값을 보면 e는 포함되지 않은 것을 볼 수 있다.
a = "Life is too short"
print(a[1:])
ife is too short
- 끝 번호 부분을 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아낸다.
a = "Life is too short"
print(a[:11])
Life is too
- 반대로 시작 번호 부분을 생략하면 문자열의 처음부터 끝 번호까지 뽑아낸다.
a = "Life is too short"
print(a[:])
Life is too short
- 시작 번호, 끝 번호 둘 다 생략하게 되면 문자열의 처음부터 끝까지 전부 뽑아낸다.
a = "Life is too short"
print(a[5:-3])
is too sh
- a[5] 부터 a[-4]까지를 말한다. 위 내용과 마찬가지로 a[-3]은 포함되지 않는다.
a = "20230404Rainy"
date = a[:8]
weather = a[8:]
print(date)
print(weather)
20230404
Rainy
- 문자열 a를 두 부분으로 나누는 기법이다.
문자열 포매팅(Formatting)
"현재 온도는 23도 입니다."
시간이 지나서 20도가 되었고 다음 문장을 출력한다.
"현재 온도는 20도 입니다."
숫자만 다르고 나머지는 모두 같다.
"a[번호] = 바꿀 값"으로 바꾸면 되지 않나? 생각하겠지만 불가능하다.
왜냐하면 Python의 문자열은 불변 객체(Immutable)이다.
이럴 때 사용하는 것이 문자열 포매팅(Formatting)이다.
숫자 대입
print( "I eat %d apples." % 3 )
'I eat 3 apples.'
- 숫자 포맷 코드는 %d이다.
문자열 대입
print("I eat %s apples." % "five")
I eat five apples.
- 문자열 포맷 코드는 %s이다
변수 대입
number = 4
"I eat %d apples." % number
'I eat 4 apples.'
2개 이상의 값 대입하기
a = 3
b = 9
print("I eat %d banana. I eat %d apple." %(a, b))
I eat 3 banana. I eat 9 apple.
- 2개 이상의 값을 넣으려면 마지막 % 괄호 안에 콤마(,)로 구분해서 각각의 값을 넣어 주면 된다.
문자열 포맷 코드 정리
코드 | 설명 |
%s | 문자열 (String) |
%c | 문자 1개 (Character) |
%d | 정수 (Integer) |
%f | 부동소수 (Floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | 리터럴 (Literal) % (문자 % 그 자체) |
정렬
print( "%10s" %"hello" )
hello
- "%10s"는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미이다.
print( "%-10s world" %"hello")
hello world
- 왼쪽 정렬은 "%-10s"가 된다. hello를 왼쪽으로 정렬하고 나머지는 공백으로 채웠음을 알 수 있다.
'(구) Study, Learn' 카테고리의 다른 글
git (0) | 2023.09.01 |
---|---|
형 변환 (type conversion) (0) | 2023.07.06 |
Data type (0) | 2023.02.07 |
Extensions (0) | 2023.01.22 |
네트워크 관리사 2급 합격 북마크들 (0) | 2022.11.15 |