KDT_4기 파이썬 기초 0923(2)
2024.09.23 수업 내용 복습일기 두번째
1.문자열이란?
파이썬에서 문자열은 텍스트 데이터를 다루는 데 사용되는 중요한 데이터 타입입니다. 문자열은 작은 따옴표(')나 큰 따옴표("), 세 개의 따옴표(''', """)로 둘러싸인 텍스트로 표현됩니다.
str1 = '오늘도 즐거운 파이썬 수업'
print(str1)
str2 = "오늘도 즐거운 파이썬 수업"
print(str2)
str3 = '''김사과:
오늘 수업 즐겁네요
그렇죠?'''
print(str3)
파이썬에서는 두 객체가 완전히 똑같을때엔 공용을 해서 쓴다 해서 완전히 똑같은 두 객체는 동일한 메모리 주소를 가지게 된다.
str1='hello'
str2='hello'
print(str1 is str2) # 두 객체가 똑같을때는 공용해서 쓰기 때문에 동일한 메모리 주소를 가지기 때문에 true값이 나오게 된다.
아래처럼 한글자라도 다르면 다른 언어이다
str1='Hello'
str2='hello'
print(str1 is str2) # 한글자가 틀리기 때문에 다른 언어 답은 False
id()함수를 쓰면 아래와 같이 객체의 고유한 메모리 주소를 반환해준다.
# id(): 객체의 고유한 메모리 주소를 반환
text = 'hello'
print(id(text))
text2 = 'hello'
print(id(text2))
text3 = 'Hello'
print(id(text3))
2. 문자열 함수와 연산자
len()함수는 문자열의 길이를 반환하여준다.
# len(): 문자열의 길이를 반환합니다.
text = "Hello, Python!"
print(len(text))
result = len(text)
result #함수를 만들게 되면 결과를 반환하게 되고 변수에 담아 출력 가능
파이썬은 문자열끼리의 덧셈이 가능하다.
# +: 두 문자열을 합쳐 새로운 문자열을 생성합니다.
name = "심현지"
age = "25"
message = name + ", " + age #파이썬은 문자와 정수의 덧셈은 할 수 없기 때문에 25에 ""를 써서 문자열로 만들어준다.
print(message)
앞서 배운 f-string을 통해 보기 편하게 수정하였다.
messege = f'{name},{age}'
print(messege) # f-string을 통해서 좀더 보기 편하게 수정
파이썬은 문자열의 곱셈도 가능하다.
# *: 문자열을 여러 번 반복하여 새로운 문자열을 생성합니다.
apple = "🍎" * 10
print(apple)
3.문자열 인덱싱과 슬라이싱
3-1. 인덱싱
파이썬은 문자열에 인덱스를 사용해 접근하거나 슬라이스가 가능하다
#문자열 인덱싱과 슬라이싱: 문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.
text = '문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.'
print(text)
# 인덱싱
print(text[0])
print(text[1])
print(text[2])
print(text[3])
print(text[12])
print(text[-1])#마지막 문자
print(text[-2])
3-2. 슬라이싱
문자열의 일부(구간)를 추출하는 방법
text = '문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.'
print(text)
# 슬라이싱
print(text[0:6]) # 6 직전까지 0~5까지라는 뜻
print(text[8:16])
print(text[:16]) #앞에 0이 생략 되어있다 생각
print(text[8:]) #8부터 끝까지라고 생각
print(text[:]) #0부터 마지막까지라고 생각
4. 문자열 메서드
문자열 메서드는 문자열 객체에 적용되는 함수로, 문자열을 조작하거나 변환하는 다양한 작업을 수행할 수 있게 해준다.
upper() - 문자를 대문자로 변환해주고 lower()함수는 문자를 소문자로 변환하여준다.
#upper()와 lower() - 대소문자 변환
text = "Hello, Python!"
print(text.upper())#대문자 변환
print(text.lower())#소문자 변환
count() - 해당 문자열의 등장 횟수를 반환하여준다.
#count() - 특정 문자열의 등장 횟수 확인
text = "Hello, Python!"
print(text.count('o'))
print(text.count('ll'))#문자열의 등장 횟수 반환
find() - 특정 문자열의 첫 번째 등장 위치를 반환하여준다. 문자열이 없을 경우에는 -1값이 출력된다.
rfind()함수는 특정 문자열을 오른쪽 부터 찾아 반환하여준다.
아래의 마지막 줄 처럼 인덱스를 통해 어디서부터 문자를 찾을지도 설정 가능하다.
#find() - 특정 부분 문자열의 첫 번째 등장 위치(인덱스) 확인
text = "Hello, Python!"
print(text.find('o'))#문자열의 첫 번째 등장 위치(인덱스) 반환
print(text.find('ll'))
print(text.find('z'))#없으면 -1
print(text.rfind('o'))#오른쪽 부터 찾음
print(text.find('o', 5))#인덱스 6이후부터 'o'의 위치 찾음
replace() - 문자열을 대체하여준다
사용 방법은 '변수. replace(old, new, [count])' 형식으로 사용한다.
- old : 현재 문자열에서 변경하고 싶은 문자
- new: 새로 바꿀 문자
- count: 변경할 횟수. 횟수는 입력하지 않으면 old의 문자열 전체를 변경한다. 기본값은 전체를 의미하는 count=-1로 지정되어있다.
# replace() - 문자열 대체
text = "Hello, Python!"
new_text = text.replace("Python", "World")#문자열 대체
print(new_text)
strip() - 문자열 양쪽 공백 제거
#strip() - 문자열 양쪽 공백 제거
text = " Hello, Python! "
print(text)
print(text.strip())
'apple' == 'apple '
'apple' == 'apple '.strip()
split() - 문자열 분리
#split() - 문자열 분리
text = '김사과 반하나 오렌지 이메론'
names = text.split() # 공백을 기준으로 분리
print(names)
text = '김사과,반하나,오렌지,이메론'
names = text.split(',') # ','을 기분으로 분리
print(names)
text = '김사과,반하나,오렌지,이메론'
names = text.split(',') # ','을 기분으로 분리
print(names)
join() - 문자열 결합
# join() - 문자열을 구성하는 각 요소 사이에 특정한 구분자를 삽입
text = 'Hello'
print('🙋♂️'.join(text))
alpha = 'abcde'
alpha = ','.join(alpha)
print(alpha)
alpha = alpha.split(',')
print(alpha)
startswith()와 endswith() - 접두사와 접미사 확인
#startswith()와 endswith() - 접두사와 접미사 확인
text = "Hello, Python!"
starts_with_hello = text.startswith("Hello")
ends_with_world = text.endswith("World!")
print(starts_with_hello)
print(ends_with_world)
1+1 = 2 이기 때문에 1 + 1과 2는 같기 때문에 True로 나온다 하지만
1 + 1 == 2
소수점을 더하니 0.1과 1.1을 더한 값인 1.2를 비교연산자 == 를 썼더니 False를 출력했다 왜일까?
0.1 + 1.1 == 1.2
해서 0.1과 1.1을 더했더니 놀랍게도 정확하게 1.2가 나오지 않았다 이유가 무엇일까.
0.1 + 1.1
[과제]소수점이 정확히 표현되지 않는 이유는?
컴퓨터에서는 고정 소수점 방식보다 근삿값으로 표현된다 고정 소수점과 달리 정수 부분과 소수 부분의 자릿수가 일정하지 않으나, 유효 숫자의 자릿수는 정해져 있다.
컴퓨터에서 부동소수점 숫자들은 2진 분수로 표현되기에 꽤 많은 값은 정확히 표현될 수 없다. 그렇기에 사람이 이해하기 쉽게 입력하는 10진 부동소수점 숫자는 2진 부동소수점 숫자로 근사 된다.
다만 이를 곧이곧대로 길게 표현한다면 꽤 많은 상황에서 성가실 것이기에 파이썬에선 이런 부동소수점 값을 표현할 때 정확히 표현하지 않고 10진수 근삿값만을 표시한다. 0.1 0.1000000000000000055511151231257827021181583404541015625 0.1에 대해 실제 십진수 값을 출력한다면 위와 같겠지만 파이썬에선 반올림된 값을 표시한다.
'인공지능 > 파이썬 기초' 카테고리의 다른 글
컬렉션 타입 튜플 (0) | 2024.09.26 |
---|---|
컬렉션 타입- 리스트 (0) | 2024.09.26 |
파이썬의 변수 (2) | 2024.09.24 |
파이썬 출력(print 함수) (0) | 2024.09.24 |
파이썬에 대해서 (0) | 2024.09.24 |