본문 바로가기
Python/Python 300제

파이썬 300제 21~30 (문자열)

by Maccrey Coding 2024. 7. 15.
728x90
반응형

21. letters가 바인딩하는 문자열에서 첫번째와 세번째 문자를 출력하세요.

>> letters = 'python'
실행 예
p t

-> 파이썬 문자열에서 한 글자를 가져오는 것을 인덱싱이라고 부릅니다. 파이썬 인덱싱은 0부터 시작합니다. (인덱싱)

lang = 'python'
print(lang[0], lang[2])

 

22. 자동차 번호가 다음과 같을 때 뒤에 4자리만 출력하세요.

>> license_plate = "24가 2210"
실행 예: 2210

-> 문자열에서 여러 글자를 가져오는 것을 슬라이싱이라고 부릅니다. 음수 값은 문자열의 뒤에서부터 인덱싱 또는 슬라이싱함을 의미합니다. 슬라이싱에서 시작 인덱스를 생락혀면 0으로 간주하고 끝 인덱스를 생략하면 문자열의 끝을 의미합니다.(슬라이싱)

license_plate = "24가 2210"
print(license_plate[-4:])

 

23. 아래의 문자열에서 '홀' 만 출력하세요.

>> string = "홀짝홀짝홀짝"
실행 예:
홀홀홀

-> 슬라이싱할 때 `시작인덱스:끝인덱스:오프셋`을 지정할 수 있습니다.

string = "홀짝홀짝홀짝"
print(string[::2])

참조

 

문자열 인덱싱에서 오프셋(offset)은 문자열의 특정 위치를 가리키는 정수를 말합니다. Python에서는 문자열의 첫 번째 문자의 인덱스가 0입니다. string[::2] 구문은 문자열 슬라이싱(slicing)을 사용하여 문자열의 부분 집합을 생성합니다. 슬라이싱의 일반적인 형식은 string[start:stop:step]이며, 각 부분은 다음과 같은 역할을 합니다:

  • start: 슬라이스의 시작 인덱스 (기본값은 0)
  • stop: 슬라이스의 끝 인덱스 (이 인덱스는 포함되지 않음, 기본값은 문자열의 끝)
  • step: 슬라이스의 간격 (기본값은 1)

string[::2]에서:

  • start stop이 생략되었으므로, 시작은 문자열의 처음부터 (0), 끝은 문자열의 끝까지 (len(string)).
  • step 2이므로, 처음부터 시작하여 두 칸씩 건너뛰면서 문자를 선택합니다.

주어진 문자열 string = "홀짝홀짝홀짝"에서 이 슬라이싱을 적용하면, 인덱스 0, 2, 4, 6, ... 위치의 문자만 선택됩니다. 구체적으로:

  1. 인덱스 0: "홀"
  2. 인덱스 2: "짝"
  3. 인덱스 4: "홀"
  4. 인덱스 6: "짝"

따라서 string[::2]의 결과는 "홀홀홀"이 됩니다.

오프셋 2 의미는  칸씩 이동하여 문자를 선택한다는 것입니다. 이로 인해 슬라이스된 문자열은 원본 문자열에서   번째 문자를 선택한 결과가 됩니다.

 

24. 문자열을 거꾸로 뒤집어 출력하세요.

>> string = "PYTHON"
실행 예:
NOHTYP

->

string = "PYTHON"
print(string[::-1])

참조

슬라이싱을 해석하면:

  • start가 생략되었으므로 문자열의 끝에서 시작합니다.
  • stop이 생략되었으므로 문자열의 시작까지 슬라이싱이 진행됩니다.
  • step -1이므로 뒤에서 앞으로  문자씩 이동하면서 슬라이스합니다.

25. 아래의 전화번호에서 하이푼 ('-')을 제거하고 출력하세요.

>> phone_number = "010-1111-2222"
실행 예
010 1111 2222

-> 파이썬 문자열에서 replace 메서드를 사용하면 문자열을 일부를 치환할 수 있습니다. 문자열은 수정할 수 없는 자료형이므로 기존 문자열은 그대로 두고 치환된 새로운 문자열이 리턴됩니다.

phone_number = "010-1111-2222"
phone_number1 = phone_number.replace("-", " ")
print(phone_number1)

참조

  • phone_number.replace("-", " ") phone_number 문자열에서 모든 하이픈(-)을 공백( )으로 대체합니다.
  • replace 함수는 문자열 내에서 특정 문자나 문자열을 다른 문자나 문자열로 바꾸는 함수입니다.
  • 이 함수의 첫 번째 인수는 대체할 대상 문자열이고, 두 번째 인수는 대체할 문자열입니다.
  • 따라서 "010-1111-2222"에서 모든 -가 로 바뀝니다.
  •  결과 phone_number1 변수에는 "010 1111 2222" 문자열이 저장됩니다.

26. 25번 문제의 전화번호를 아래와 같이 모두 붙여 출력하세요.

실행 예
01011112222

->

phone_number = "010-1111-2222"
phone_number1 = phone_number.replace('-', '')
print(phone_number1)

 

27. url 에 저장된 웹 페이지 주소에서 도메인을 출력하세요.

>> url = "http://sharebook.kr"
실행 예:
kr

-> 문자열로 표현된 url에서 `.`을 기준으로 분리합니다. 분리된 url 중 마지막을 인덱싱하면 도메인만 출력할 수 있습니다.

url = "http://sharebook.kr"
url_split = url.split('.')
print(url_split[-1])

참조

url_split = url.split('.')

  • url.split('.') url 문자열을 (.) 기준으로 분할하여 리스트로 반환합니다.
  • split 함수는 문자열을 특정 구분자(여기서는 .) 기준으로 분할합니다.
  •  결과, url_split 변수에는 ['http://sharebook', 'kr'] 리스트가 저장됩니다.

28. 아래 코드의 실행 결과를 예상해보세요.

>> lang = 'python'
>> lang[0] = 'P'
>> print(lang)

-> 문자열은 수정할 수 없습니다. 실행 결과를 확인해보면 문자열이 할당(assignment) 메서드를 지원하지 않음을 알 수 있습니다.

TypeError                                 Traceback (most recent call last)
<ipython-input-22-a0f3d05b669c> in <module>
      1 lang = "python"
----> 2 lang[0]= "P"
      3 print(lang)

TypeError: 'str' object does not support item assignment

 

29. 아래 문자열에서 소문자 'a'를 대문자 'A'로 변경하세요.

>> string = 'abcdfe2a354a32a'
실행 예:
Abcdfe2A354A32A

->

string = 'abcdfe2a354a32a'
string = string.replace('a', 'A')
print(string)

 

30. 아래 코드의 실행 결과를 예상해보세요.

>> string = 'abcd'
>> string.replace('b', 'B')
>> print(string)

-> `abcd`가 그대로 출력됩니다. 왜냐하면 문자열은 변경할 수 없는 자료형이기 때문입니다. replace 메서드를 사용하면 원본은 그대로 둔채로 변경된 새로운 문자열 객체를 리턴해줍니다.

 

728x90
반응형

'Python > Python 300제' 카테고리의 다른 글

파이썬 300제 51~60 (리스트)  (1) 2024.07.15
파이썬 300제 41~50 (문자열)  (0) 2024.07.15
파이썬 300제 31~40 (문자열)  (2) 2024.07.15
파이썬 300제 11~20 (변수)  (0) 2024.07.15
파이썬 300제 1~10 (print)  (3) 2024.07.15