Python 에선 변수에 값을 저장할때, 그 값이 숫자인지, 문자인지, 논리값인지 구분하는 것이 중요하다. 데이터타입별로 가능한 연산이나 처리가 정해져있기 때문이다.
그래서 오늘은 데이터 타입에 대해 알아보고자 한다.
숫자형 ( Numeric )
Python 에서 숫자형은 크게 두 가지로 나눌 수 있다.
바로 정수형( int )과 실수형( float ) 이다. 물론 복소수형(complex), 8진수, 16진수 등 도있지만 이거는 다음에...
정수형
# 정수형 <class 'int'>
integer = 100
x = 2
y = 5
a = 0
a = -3
- 수학에서 배운 정수 그대로 양의정수, 0, 음의정수 다 표현이 가능하다.
- 정수의 크기에 제한이 없다(메모리가 허용하는 한)
- 일반적인 연산(+, -, *, //, %, **) 에 사용 가능
실수형
# 실수형 <class 'float'>
float = 3.14
a = 1.2
a = -4.5
# 부동소수점 근사 표현
result = 10 - 3.14
print(result) # 6.859999999999999
# 지수 표현방식
a = 4.24E10 # 4.24 * 10^10
a = e.24e-10 # 4.24 * 10^-10
- 15 ~ 17 자리 정도의 정밀도를 가지며, 더 큰숫자에서는 오차가 발생할 수 있다. ex) 10 - 3.14
- 부동소수점 방식으로 표현.
- 지수 표현법 사용가능 ex) 1.5e3 은 1500
문자형 ( String )
- 문자, 단어, 문장을 저장하는 데이터 타입
- 작은따옴표( ' ) 또는 큰따옴표( " )로 감싸서 만든다.
# <class 'str'>
str1 = 'Hello'
str2 = "World"
여러 줄 문자열
multiline = '''이건
여러줄
문
자
열
입니
다'''
- 문자열이 여러 줄로 구성될 경우 삼중따옴표 ( ''' 또는 """ )를 사용
문자열 내부에 따옴표
txt = '문자열안에 "큰따옴표" 를 넣고싶어요!' # 서로다른 따옴표 사용
txt = "문자열안에 \"큰따옴표\" 를 넣고싶어요!" # 이스케이프 문자 사용
- 서로 다른 따옴표 사용
- 같은 따옴표라면 이스케이프 문자 사용
이스케이프 문자가 궁금하다면?
더보기
여기서 잠깐 이스케이프 문자란??
이스케이프 문자 (Escape Character) 는 문자열 안에서 특수한 동작을 수행하거나, 특별한 문자를 표현하기 위해 사용됩니다.
이스케이프 문자는 백슬래시 ( \ )로 시작하며 뒤에 특정 문자가 붙어 의미를 갖는다.
이스케이프 문자를 특별한 기능으로 처리하지 않고, 문자 그대로 표현하고 싶다면??
Raw 문자열
r String 을 사용하면 된다. 문자열 앞에 r 또는 R 을 붙이면 해당 문자열은 Raw 로 처리된다.
raw_path = r"C:\Users\Name\Documents" # C:\Users\Name\Documents
문자열 연산
str1 = "안녕"
str2 = "하세요"
str1 + str2 # 안녕하세요
str1 + " " + str2 # 안녕 하세요
str1 * 5 # 안녕안녕안녕안녕안녕
print("안" in str1) # True
print("세요" not in str1) # False
- 문자형 데이터타입은 + 와 * 연산이 가능
- + 연산 : 문자열을 연결한다
- * 연산 : 문자열을 반복한다
- 멤버십 연산자 in 을 통해 특정문자가 있는지 확인가능
문자열 길이 구하기
str1 = "Hello"
print(len(str1)) # 5
str2 = "H E L L O"
print(len(str2)) # 9
- length 을 알고싶은 문자열을 len() 함수의 인자로 준다
- 공백문자도 포함한 길이를 센다
문자열 인덱싱과 슬라이싱
문자열은 인덱스를 통해 개별 문자에 접근할 수 있으며, 슬라이싱을 통해 부분 문자열을 추출할 수 있다.
str1 = "Python"
str1[0] # 'P'
str1[1:4] # 'yth'
str1[-1] # 'n'
- 인덱스는 0번째부터 샌다
- 음수 인덱스를 사용하면 뒤에서부터 요소를 선택
슬라이싱 기본문법
String[start:end:step]
- start : 슬라이싱을 시작할 인덱스 (포함) -> 생략하면 처음부터 슬라이싱 ex) str[:5]
- end : 슬라이싱을 종료할 인덱스 (포함하지 않음) -> 생략하면 끝까지 슬라이싱 ex) str[5:]
- step : 요소를 건너뛸 간격 (기본값은 1) -> 간격에 음수를 사용하면 역순으로 슬라이싱 ex) str[::-1]
문자열 포매팅
서식 지정자
print("제 이름은 %s 이고 나이는 %s 살 입니다." % ("mohamed salah", 32))
format() 메서드
print("제 이름은 {} 이고 나이는 {} 살 입니다.".format("mohamed salah", 32))
f-String (Python 3.6 이상)
name = "mohamed salah"
age = 32
print(f"제이름은 {name} 이고 나이는 {age} 살 입니다.")
문자열 관련 함수들
# 문자열 확인 - startswith(), endswith()
string = "aabbcd1123"
print(string.startswith("aab")) # True
print(string.endswith("d1123")) # True
# 문자열 확인 - isalpha(), isdigit(), isalnum(), isspace()
print("abc".isalpha()) # True (문자만 포함)
print("123".isdigit()) # True (숫자만 포함)
print("abc123".isalnum()) # True (문자 + 숫자)
print(" ".isspace()) # True (공백만 포함)
# 문자열 반환 - upper(), lower(), capitalize(), title(), swapcase()
text = "hello, python!"
print(text.upper()) # 'HELLO, PYTHON!'
print(text.lower()) # 'hello, python!'
print(text.capitalize()) # 'Hello, python!' (첫 문자만 대문자)
print(text.title()) # 'Hello, Python!' (각 단어 첫 문자 대문자)
print(text.swapcase()) # 'hELLO, pYTHON!' (대소문자 바꿔서)
# 공백 제거 - strip(), lstrip(), rstrip()
text = " Hello, Python! "
print(text.strip()) # 'Hello, Python!'
print(text.lstrip()) # 'Hello, Python! ' 오른쪽 공백 제거
print(text.rstrip()) # ' Hello, Python!' 왼쪽 공백 제거
print(text.strip('o')) # ' Hell, Pythn! ' 특정문자 제거
# 문자열 검색 - find(), rfind(), index(), rindex()
text = "Hello, Python!"
print(text.find("o")) # 4 (첫 번째 위치)
print(text.rfind("o")) # 9 (뒤에서 찾기)
print(text.index("o")) # 4 (찾을 수 없으면 ValueError)
# 개수 세기 - count()
print(text.count("o")) # 2 ('o'의 개수)
# 문자열 대체 - replace()
text = "Hello, Python!"
print(text.replace("Python", "World")) # 'Hello, World!'
# 문자열 분리와 결합 - split(), rsplit(), join()
text = "apple,banana,cherry"
print(text.split(",")) # ['apple', 'banana', 'cherry']
print(text.rsplit(",", 1)) # ['apple,banana', 'cherry']
words = ["Hello", "World"]
print(" ".join(words)) # 'Hello World'
'Python > Python 기초' 카테고리의 다른 글
[Python] 모듈 ( Module ), 패키지 ( Package ) (4) | 2024.11.27 |
---|---|
[Python] 반복문 ( for, while ) (0) | 2024.11.20 |
[Python] 조건문 ( if , elif , else ) (0) | 2024.11.19 |
[Python] 연산자 (0) | 2024.11.18 |
[Python] 기본 데이터 유형(불리안, 컬렉션 자료형) (0) | 2024.11.17 |