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, ... 위치의 문자만 선택됩니다. 구체적으로:
- 인덱스 0: "홀"
- 인덱스 2: "짝"
- 인덱스 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 메서드를 사용하면 원본은 그대로 둔채로 변경된 새로운 문자열 객체를 리턴해줍니다.
'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 |