본문 바로가기
파이썬

3. 파이썬 문자열 다루기 & 0.1+ 1.1 ≠ 1.2 인 이유

by 곽정우 2024. 3. 13.

1. 문자열이란?

파이썬에서 문자열은 텍스트 데이터를 다루는 데 사용되는 중요한 데이터 타입입니다. 문자열은 작은 따옴표(')나 큰 따옴표("), 세 개의 따옴표(''', """)로 둘러싸인 텍스트로 표현됩니다.

 

2. 문자열 재할당

파이썬에서 문자열은 불변(immutable)한 데이터 타입이므로 같은 변수에 문자열을 재할당하는 경우, 새로운 문자열 객체가 생성되고 변수는 새로운 문자열 객체를 참조하게 됩니다. 이전 문자열 객체는 변경되지 않습니다.

 

3. 문자열 함수와 연산자

 

3-1. 문자열 길이 확인하기

  • len() 함수: 문자열의 길이를 반환합니다.

 

3-2. 문자열 합치기

  • (+): 두 문자열을 합쳐 새로운 문자열을 생성합니다.

 

3-3. 문자열 반복하기

  • (*): 문자열을 여러 번 반복하여 새로운 문자열을 생성합니다.

 

3-4. 문자열 인덱싱과 슬라이싱

  • 문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스 할 수 있습니다.

 

인덱싱:

  • 각 문자는 0부터 시작하는 인덱스를 가지고 있습니다.
  • [] 연산자를 사용하여 인덱스를 지정하여 특정 문자에 접근할 수 있습니다.

인덱싱 결과

 

슬라이싱:

  • [start:end] 구문을 사용하여 문자열의 일부를 추출할 수 있습니다.
  • start는 추출 시작 인덱스, end는 추출 종료 인덱스를 나타냅니다.
  • end를 생략하면 문자열 끝까지 추출됩니다.

슬라이싱 결과

 

4. 문자열 메서드

문자열 메서드는 문자열 객체에 적용되는 함수로, 문자열을 조작하거나 변환하는 다양한 작업을 수행할 수 있게 해 줍니다.

 

4-1. upper()와 lower() - 대소문자 변환

  • upper(): 문자열의 모든 문자를 대문자로 변환합니다.
  • lower(): 문자열의 모든 문자를 소문자로 변환합니다.

 

4-2. count() - 특정 문자열의 등장 횟수 확인

  • count(sub_str): 문자열 내에서 특정 문자열(sub_str)이 등장하는 횟수를 반환합니다.

 

4-3. find() - 특정 부분 문자열의 첫 번째 등장 위치(인덱스) 확인

  • find(sub_str): 문자열 내에서 특정 문자열(sub_str)이 처음 등장하는 위치(인덱스)를 반환합니다.
  • find(sub_str, start_idx): 검색을 시작할 위치(인덱스)를 지정할 수 있습니다.

 

4-4. replace() - 문자열 대체

  • replace(old_str, new_str): 문자열 내에서 특정 문자열(old_str)을 다른 문자열(new_str)로 대체합니다

 

4-5. strip() - 문자열 양쪽 공백 제거

  • strip(): 문자열 양쪽의 공백을 제거합니다.
  • lstrip(): 문자열 왼쪽의 공백만 제거합니다.
  • rstrip(): 문자열 오른쪽의 공백만 제거합니다.

 

4-6. split() - 문자열 분리

  • split(sep): 지정된 구분자(sep)를 기준으로 문자열을 분리하여 리스트로 반환합니다.

 

4-7. join - 문자열 결합()

  • join(list): 리스트의 각 요소를 지정된 구분자(sep)로 연결하여 문자열을 반환합니다.

 

4-8. startswith()와 endswith() - 접두사와 접미사 확인

  • startswith(prefix): 문자열이 특정 접두사(prefix)로 시작하는지 확인합니다.
  • endswith(suffix): 문자열이 특정 접미사(suffix)로 끝나는지 확인합니다.

 

※. 0.1+ 1.1 ≠ 1.2 인 이유

 

1. 부동소수점 표현

컴퓨터는 실수를 저장하기 위해 부동소수점 표현 방식을 사용합니다. 이 방식은 지수부와 가수부로 구성된데, 이는 숫자의 크기와 정밀도를 나타냅니다.

 

2. 0.1 + 1.1 ≠ 1.2 발생 원인

0.1과 1.1은 10진수로는 정확하게 표현될 수 있지만, 2진수로는 무한 소수가 되므로 부동소수점 표현 방식으로 정확하게 표현될 수 없습니다. 컴퓨터는 이 숫자들을 근사값으로 저장하기 때문에, 실제 계산 결과는 1.2와 차이가 발생하게 됩니다.

 

3. 부동소수점 오차 해결 방법:

  • Decimal 라이브러리 사용: Python의 Decimal 라이브러리는 부동소수점 오차 없이 계산을 수행할 수 있도록 합니다.
  • 반올림 함수 사용: round() 등의 함수를 사용하여 원하는 소수점 자릿수까지 반올림하여 결과값을 얻을 수 있습니다.
  • fsum() 함수 사용: fsum() 함수는 리스트에 담긴 숫자들을 순차적으로 더하여 부동소수점 오차 누적을 방지하는 데 도움이 됩니다.

4. 결론:

0.1 + 1.1 ≠ 1.2는 부동소수점 표현 방식의 한계로 인해 발생하는 현상입니다. 부동소수점 오차는 다양한 분야에서 영향을 미칠 수 있으므로, 항상 오차 발생 가능성을 인지하고 적절한 해결 방법을 적용해야 합니다.

 

5. 참고자료:

 

 

 

 

 

'파이썬' 카테고리의 다른 글

6. 파이썬 컬렉션 타입 - 세트  (0) 2024.03.14
5. 파이썬 컬렉션 타입 - 튜플  (0) 2024.03.14
4. 파이썬 컬렉션 타입 - 리스트  (0) 2024.03.14
2. 파이썬의 변수  (0) 2024.03.12
1. 파이썬의 출력  (0) 2024.03.12