Python/Python 기초

[Python] 기본 데이터 유형(숫자형, 문자형)

죵욜이 2024. 11. 16. 18:58

 

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 을 사용하면 된다. 문자열 앞에  또는  을 붙이면 해당 문자열은 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'