Python 자료형-숫자형, 문자열

배추·2025년 10월 2일

🐍 Python

목록 보기
2/23

Python의 숫자형, 문자열 자료형에 대해 알아봅니다.


  • 자료형이란?
    • 자료형: 프로그래밍을 할 때 쓰이는 숫자, 문자열 등과 같이 자료 형태로 사용하는 모든 것.
    • 종류: 숫자, 문자열, 불, 리스트, 튜플, 딕셔너리, 집합

▶︎ 숫자형

  • 정수 int: 123, -345, 0
  • 실수 float: 123.45, -1234.5, 3.4e10
  • 컴퓨터식 지수 표현 방식: 4.24e10(4.24 10¹⁰), 4.24e-10(4.24 10⁻¹⁰)
    • 소문자 e, 대문자 E 상관 없다.
  • 8진수: 0o34, 0o25
    • 숫자가 0o 또는 0O(숫자 0 + 알파벳 소문자 o 또는 대문자 O)으로 시작.
  • 16진수: 0x2A, 0xFF
    • 0x로 시작.
a = 123
print(type(a)) # <class 'int'>

b = 1.23
print(type(b)) # <class 'float'>

c = 4.24e10
print(c) # 42400000000.0
print(type(c)) # <class 'float'>

d = 0o10
print(d) # 8
print(type(d)) # <class 'int'>

e = 0x8ff # a = 10, b = 11 ...
print(e) # 2303
print(type(e)) # <class 'int'>

연산자

  • +, -, *, /: 사칙 연산.
  • x ** y: x의 y제곱.
  • %: 나눗셈 후 나머지를 반환.
  • //: 나눗셈 후 몫을 반환. (정숫값)
  • 복합 연산자: +=, -=, *=, /=, //=, %=, **=
    • 예) a += 1: a = a + 1

▶︎ 문자열

  • 연속된 문자들의 나열.
a = "Life is too short, You need Python"
b = "a"
c = "123"
print(type(a)) # <class 'str'>
print(type(b)) # <class 'str'>
print(type(c)) # <class 'str'>

🌟문자열로 만드는 방법

    1. 큰따옴표로 양쪽 둘러싸기
    1. 작은따옴표로 양쪽 둘러싸기
    1. 큰따옴표 3개를 연속으로 써서 양쪽 둘러싸기
    1. 작은따옴표 3개를 연속으로 써서 양쪽 둘러싸기
a = "Hello World" # 1
b = 'Python is fun' # 2
c = """Life is too short, You need python""" # 3
d = '''Life is too short, You need python''' # 4

문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때

  • 문자열 중 작은따옴표(')가 포함되어 있는 경우: 문자열을 큰따옴표로 둘러싸야 한다. 큰따옴표 안에 들어 있는 작은따옴표는 문자열을 나타내기 위한 기호로 인식되지 않는다.
food = "Python's favorite food is perl"
  • 문자열 중 큰따옴표(")가 포함되어 있는 경우: 문자열을 작은따옴표로 둘러싸기. 작은따옴표 안에 사용된 큰따옴표는 문자열을 만드는 기호로 인식되지 않는다.
say = '"Python is very easy." he says.'
  • 역슬래시 \ 사용: 역슬래시를 작은따옴표나 큰따옴표 앞에 삽입하면 역슬래시 뒤의 작은따옴표나 큰따옴표는 문자열을 둘러싸는 기호의 의미가 아니라 '나 " 자체를 뜻하게 된다.
food = 'Python\'s favorite food is perl'
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"""

+) 이스케이프 코드

  • 이스케이프 코드: 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 '문자 조합'.
  • \n: 문자열 안에서 줄을 바꿀 때.
  • \t: 문자열 사이에 탭 간격을 줄 때.
  • \\: \를 그대로 표현할 때.
  • \': 작은따옴표(')를 그대로 표현할 때.
  • \": 큰따옴표(")를 그대로 표현할 때.

🌟문자열 연산

문자열 더하기

  • 연결.
head = "Python"
tail = " is fun!"
head + tail
print(head + tail) # Python is fun!

문자열 곱하기

  • 반복.
  • 문자열 * 숫자만 허용. 문자열끼리 곱하면 오류.
a = "python"
a * 2
print(a * 2) # pythonpython

🌟문자열 길이

  • len 함수 사용.
  • 문자열의 길이에는 공백 문자도 포함된다.
a = "Life is too short"
len(a) # 17

🌟문자열의 인덱싱과 슬라이싱

인덱싱(indexing): 가리킨다.

a = "Life is too short, You need Python"
a[3] # 'e'
a[-1] # 'n': 뒤에서부터 세어 첫 번째가 되는 문자

슬라이싱(slicing): 잘라 낸다.

  • [이상:미만:간격]
  • 슬라이싱 기법으로 시작번호, 끝번호를 지정할 때 끝 번호에 해당하는 문자는 포함하지 않는다.
  • 끝 번호 부분을 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아 낸다.
  • 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아 낸다.
  • 시작 번호와 끝 번호를 생략하면 문자열의 처음부터 - 인덱싱과 마찬가지로 -(빼기) 기호를 사용할 수 있다.
  • 간격에 음수가 들어가면 뒤에서 시작한다.
a = "Life is too short, You need Python"
a[0:4] # 'Life'
a[19:] # 'You need Python'
a[:17] # 'Life is too short'
a[:]   # 'Life is too short, You need Python'
a[::-1] # 'nohtyP deen uoY ,trohs oot si efiL'

+) Pithon 문자열을 Python으로 바꾸려면?

a = "Pithon"
a[1] = 'y'

=> 오류. 문자열의 요솟값은 바꿀 수 있는 값이 아니다. (문자열은 '변경 불가능한(immutable) 자료형')
=> 슬라이싱 기법 사용.

a = "Pithon"
a[:1] + 'y' + a[2:]

🌟문자열 포매팅 (1)

  • 문자열 포매팅(string formatting): 문자열 안에 어떤 값을 삽입하는 방법.

숫자 바로 대입

a = "I eat %d apples." % 3 
# 'I eat 3 apples.'
  • 문자열 안의 숫자를 넣고 싶은 자리에 %d 문자를 넣어 주고
  • 삽입할 숫자 3은 가장 뒤에 있는 % 문자 다음에 써 넣었다.
  • %d: '문자열 포맷 코드'라고 부른다.

문자열 바로 대입

a = "I eat %s apples." % "five" 
# 'I eat five apples.'
  • 문자열을 넣기 위해서는 %s를 써야 한다.

숫자 값을 나타내는 변수로 대입

number = 3
a = "I eat %d apples." % number
# 'I eat 3 apples.'
  • 변수를 대입 가능.

2개 이상의 값 넣기

number = 10
day = "three"
"I ate %d apples. so I was sick for %s days." % (number, day)
# 'I ate 10 apples. so I was sick for three days.'

문자열 포맷 코드

코드설명
%s문자열(String)
%c문자 1개(character)
%d정수(Integer)
%f부동소수(floating-point)
%o8진수
%x16진수
%%Literal % (문자 % 자체)
  • %s 포맷 코드에는 어떤 형태의 값이든 변환해 넣을 수 있다.
    • 3을 문자열 안에 삽입하려면 %d를 사용해야 하고,
    • 3.234를 삽입하려면 %f를 사용해야 한다.
    • 하지만 %s를 사용하면 %s는 자동으로 % 뒤에 있는 3이나 3.234와 같은 값을 문자열로 바꾸어 대입하기 때문에 이런 것을 생각하지 않아도 된다.
a = "I have %s apples" % 3
# 'I have 3 apples'

b = "rate is %s" % 3.234
# 'rate is 3.234'
  • 포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다.
a = "Error is %d%." % 98
# 오류

b = "Error is %d%%." % 98
# 'Error is 98%.'

포맷 코드와 숫자 함께 사용하기

정렬과 공백

a = "%10s" % "hi"
# '        hi'

a = "%-10sjane." % 'hi'
# 'hi        jane.'
  • %10s: 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미.
  • %-10s: 반대쪽인 왼쪽 정렬.

소수점 표현하기

a = "%0.4f" % 3.42134234
# '3.4213'
  • %0.4f: 소수점 네 번째 자리까지만.
    • .: 소수점 포인트.
    • 소수점 포인트 뒤의 숫자: 소수점 뒤에 나올 숫자의 개수.
    • 소수점 포인트 앞의 숫자: 문자열의 전체 길이.
      - %0.4f에서 사용한 숫자 0은 길이에 상관하지 않겠다는 의미. (0을 빼고 %.4f 로 사용 가능)

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

숫자 바로 대입하기

a = "I eat {0} apples".format(3)
# 'I eat 3 apples'
  • 문자열 중 {0} 부분이 숫자 3으로.

문자열 바로 대입하기

a = "I eat {0} apples".format("five")
# 'I eat five apples'
  • 문자열의 {0} 항목이 'five'라는 문자열로.

숫자 값을 가진 변수로 대입하기

number = 3
a = "I eat {0} apples".format(number)
# 'I eat 3 apples'
  • 문자열의 {0} 항목이 number 변수의 값인 3으로.

2개 이상의 값 넣기

number = 10
day = "three"
a = "I ate {0} apples. so I was sick for {1} days.".format(number, day)
# 'I ate 10 apples. so I was sick for three days.'
  • 문자열의 {0}, {1}과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.

이름으로 넣기

a = "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
# 'I ate 10 apples. so I was sick for 3 days.'
  • 인덱스 항목 대신 {name} 형태를 사용.
  • {name} 형태를 사용할 경우, format 함수에는 반드시 name=value와 같은 형태의 입력값이 있어야 한다.

인덱스와 이름을 혼용해서 넣기

a = "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
# 'I ate 10 apples. so I was sick for 3 days.'
  • 인덱스 항목과 name=value 형태를 혼용하는 것도 가능.

왼쪽 정렬, 오른쪽 정렬, 가운데 정렬, 공백 채우기

a = "{0:<10}".format("hi")
# 'hi        '

b = "{0:>10}".format("hi")
# '        hi'

c = "{0:^10}".format("hi")
# '    hi    '

d = "{0:=^10}".format("hi")
# '====hi===='

e = "{0:!<10}".format("hi")
# 'hi!!!!!!!!'
  • :<10: 치환되는 문자열을 왼쪽으로 정렬하고 문자열의 총 자릿수를 10으로 맞춘다.
  • :>: 오른쪽 정렬.
  • :^: 가운데 정렬.
  • 정렬할 때 공백 문자 대신 지정한 문자 값으로 채워 넣을 수도 있다.
    • 채워 넣을 문자 값은 정렬 문자 <, >, ^ 바로 앞에 넣어야 한다.

소수점 표현하기

y = 3.42134234

a = "{0:0.4f}".format(y)
# '3.4213'

b = "{0:10.4f}".format(y)
# '    3.4213'

{} 문자 표현하기

a = "{{ and }}".format()
# '{ and }'
  • format 함수를 사용해 문자열을 포매팅할 경우, {}와 같은 중괄호 문자를 포매팅 문자가 아닌 문자 그대로 사용하고 싶은 경우에는 2개를 연속해서 사용하면 된다.

🔥f 문자열 포매팅 (3)

  • 파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있다.
name = '홍길동'
age = 30
dic = {'name':'홍길동', 'age':30}

a = f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
# '나의 이름은 홍길동입니다. 나이는 30입니다.'

b = f'나는 내년이면 {age + 1}살이 된다.'
# '나는 내년이면 31살이 된다.'

c = f'나의 이름은 {dic["name"]}입니다. 나이는 {dic["age"]}입니다.'
# '나의 이름은 홍길동입니다. 나이는 30입니다.'
  • 변숫값을 생성한 후에 그 값을 참조할 수 있다.
  • f 문자열 포매팅은 표현식을 지원한다.
    • 표현식: 중괄호 안의 변수를 계산식과 함께 사용하는 것
  • f 문자열 포매팅에서 딕셔너리는 사용 가능.
    • 딕셔너리: Key와 Value라는 것을 한 쌍으로 가지는 자료형.

정렬

a = f'{"hi":<10}'  # 왼쪽 정렬
# 'hi        '

b = f'{"hi":>10}'  # 오른쪽 정렬
# '        hi'

c = f'{"hi":^10}'  # 가운데 정렬
# '    hi    '

공백 채우기

a = f'{"hi":=^10}'  # 가운데 정렬하고 '=' 문자로 공백 채우기
# '====hi===='

b = f'{"hi":!<10}'  # 왼쪽 정렬하고 '!' 문자로 공백 채우기
# 'hi!!!!!!!!'

소수점

y = 3.42134234

a = f'{y:0.4f}'  # 소수점 4자리까지만 표현
# '3.4213'

b = f'{y:10.4f}'  # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
# '    3.4213'

{} 문자

a = f'{{ and }}'
# '{ and }'

f 문자열을 사용하여 금액에 콤마(,) 삽입하기

a = f"난 {1500000:,}원이 필요해"
# '난 1,500,000원이 필요해'
  • f 문자열을 활용하면 숫자에 자동으로 콤마(,)를 삽입하여 가독성을 높일 수 있다.

🌟문자열 내장 함수

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

count

  • 문자 개수 세기.
a = "hobby"
a.count('b') # 2

find

  • 위치 알려 주기.
a = "Python is the best choice"
a.find('b') # 14
a.find('k') # -1
  • 찾는 문자가 처음으로 나온 인덱스 반환.
  • 만약 찾는 문자나 문자열이 존재하지 않는다면 -1을 반환.

index

  • 위치 알려 주기.
a = "Life is too short"
a.index('t') # 8
a.index('k') # 오류
  • 찾는 문자나 문자열이 존재하지 않는다면 오류가 발생.

join

  • 문자열 삽입.
",".join('abcd') # 'a,b,c,d'
  • 문자열뿐만 아니라 리스트나 튜플도 입력으로 사용할 수 있다.

upper

  • 소문자를 대문자로 바꾸기.
a = "hi"
a.upper() # 'HI'
  • 문자열이 이미 대문자라면 아무런 변화도 일어나지 않는다.

lower

  • 대문자를 소문자로 바꾸기.
a = "HI"
a.lower() # 'hi'

strip, rstrip, lstrip

  • 양쪽/오른쪽/왼쪽 공백 지우기.
a= " hi "
a.rstrip() # ' hi'

a = " hi "
a.strip() # 'hi'
  • 문자열 중 양쪽/오른쪽/왼쪽에 있는 한 칸 이상의 연속된 공백을 모두 지운다.

replace

  • 문자열 바꾸기.
a = "Life is too short"
a.replace("Life", "Your leg") # 'Your leg is too short'
  • replace(바뀔문자열, 바꿀문자열): 문자열 안의 특정한 값을 다른 값으로 치환.

split

  • 문자열 나누기. 나눈 값은 리스트에 하나씩 들어간다.
a = "Life is too short"
a.split() # ['Life', 'is', 'too', 'short']

b = "a:b:c:d"
b.split(':') # ['a', 'b', 'c', 'd']
  • 괄호 안에 아무 값도 넣어 주지 않으면 공백([Space], [Tab], [Enter])을 기준으로 문자열을 나누어 준다.
  • 괄호 안에 특정 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다.

isalpha

  • 문자열이 알파벳으로만 구성되어 있는지 확인하기.
s = "Python"
s.isalpha() # True

s = "Python3"
s.isalpha() # False

s = "Hello World"
s.isalpha() # False
  • 영문 알파벳만 포함되어 있는 경우에만 True를 반환.
  • 공백이나 숫자, 특수 문자가 포함되어 있으면 False 반환.

isdigit

  • 문자열이 숫자로만 구성되어 있는지 확인하기.
s = "12345"
s.isdigit() # True

s = "1234a"
s.isdigit() # False

s = "12 34"
s.isdigit() # False
  • 문자열의 모든 문자가 숫자일 경우 True를 반환. 하나라도 숫자가 아닌 문자가 포함되어 있으면 False를 반환.

startswith, endswith

  • startswith: 문자열이 특정 문자(열)로 시작하는지 확인하기.
  • endswith: 문자열이 특정 문자(열)로 끝나는지 확인하기.
s = "Life is too short"
s.startswith("Life") # True
s.startswith("short") #False
profile
난 🥬

0개의 댓글