인생은 오차 범위 줄이기

처음은 누구나 광범위하다

(구) Study, Learn

Python 숫자형, 문자열 자료형

Divide 2023. 4. 4. 20:14

숫자형


  • 숫자형(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