본문 바로가기
#개인연구 및 공부#/[python]

(2020.10.29)파이썬 300제 문제풀기 [No.021 - 030] - 파이썬 문자열 1

by 착한해커 2020. 10. 29.

파이썬 300제[No.021 - 030] - 파이썬 문자열 1

파이썬에서 활용되는 문자열을 인덱싱하거나 슬라이싱 하는 방법을 배우는 문제풀기

 

 

 

No.021 문자열 인덱싱

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

letters = 'python'

 

 

입력) 문자열을 입력받은 변수에 [0] 와같이 출력하려는 특정 문자의 위치를 지정하면 해당 문자가 인덱싱 되어 찾아진다. 

파이썬이든 어떤 프로그래밍이든 첫번째 순서는 0으로 시작한다.

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

 

출력)

p t

 

 

 

No.022 문자열 슬라이싱

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

license_plate = "24가 2210"

실행 예: 2210

 

입력) 문자열을 잘라내는 것을 슬라이싱 이라고 한다. 3가지 방법이 있으며 내용은 아래 주석을 확인하면 된다.

특이한 점은 음수를 활용해서도 문자열 위치를 지정할 수 있다. 끝에서 첫번째 문자의 위치는 -1 이고 뒤에서 두번째는 -2, 세번째는 -3 이런식으로 이루어 진다. -4를 시작점으로 하면 문제의 답을 출력할 수 있다.

license_plate = "24가 2210"
print(license_plate[4:8]) #지정된 문자열 위치와 끝 위치 지정
print(license_plate[4:]) #지정된 문자열 위치부터 끝까지 출력
print(license_plate[-4:]) #지정된 문자열을 음수로 지정하고 끝까지 출력

 

출력)

2210
2210
2210

 

 

 

 

No.023 문자열 인덱싱

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

string = "홀짝홀짝홀짝"

 

 

입력) 2가지 방법이 있다. 출력하려는 문자열 위치를 직접 인덱싱하거나 [시작인덱스:종료인덱스:오프셋] 구문을 활용하여 출력하는 방법

string = "홀짝홀짝홀짝"
print(string[0]+string[2]+string[4]) #출력문자 위치 직접지정
print(string[::2]) #:::을 사용하여 처음문자열부터 마지막 문자열 범위중 2개 단위에 위치한 문자출력

 

출력)

홀홀홀
홀홀홀

 

 

 

 

No.024 문자열 슬라이싱

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

string = "PYTHON"

입력) 문자열을 뒤집어서 출력하는 방법에는 2가지가 있다 둘다 동일하게 역순 출력이 되지만

첫번째 방법처럼 슬라이싱을 하는 방법과 직접지정 방식 이렇게 2가지가 있으며, 당연히 첫번째 방법이 효율적이다.

string = "PYTHON"
print(string[::-1]) # 슬라이싱 [:::] 기법을 사용하여 오프셋을 -1을 주어 문자열 전체범위를 -1(문자열 끝)단위로 역순 출력
print(string[5]+string[4]+string[3]+string[2]+string[1]+string[0]) # 비효율적 방법임. 문자 위치를 역순으로 지정하여 출력

 

출력)

NOHTYP
NOHTYP

 

 

 

No.025 문자열 치환

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

phone_number = "010-1111-2222"

 

 

입력) 파이썬에는 replace()라는 함수가 있다. 특정문자를 지정된 문자로 변경할 수 있는 함수다

해당함수를 호출하여 -(하이픈)을 공백으로 치환하고 출력한다.

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

 

출력)

010 1111 2222

 

 

 

No.026 문자열 다루기

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

실행 예 01011112222

 

입력) 25번 문제와 동일한 코드에서 " " -> "" 로 공백을 제외하고 출력하도록 한다.

 

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

 

출력)

01011112222

 

 

 

 

No.027 문자열 다루기

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

url = "http://sharebook.kr"

 

입력) print()는 "" 또는 '' 문자 사이에 입력하면 문자열로 인식된다. " ' 또는 ' " 로는 사용할 수 없다.

url = "http://sharebook.kr"
url_replace = url.replace("http://sharebook.", "") # kr 이외 나머지 값을 지움으로 치환하여 출력
url_index = url[17:] # 출력할 문자열 위치부터 끝까지 출력
url_reverse = url[-2:] # 출력할 문자열 끝에서부터 - 로 인덱싱하여 출력
url_split = url.split(".") # split 함수 활용하여 .을 기준으로 두개 문자열로 나누고 리스트화 시킨 후 두번째 리스트 요소를 출력

print(url_replace)
print(url_index)
print(url_reverse)
print(url_split[1])

 

출력)

kr
kr
kr
kr

 

 

 

 

No.028 문자열은 immutable

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

lang = 'python'

lang[0] = 'P'

print(lang)

 

입력) 문자열 에러가 발생될 것이다. 문자열은 해당 기능을 지원하지 않는 타입이다.

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

 

출력)

Traceback (most recent call last):
  File "e:\STUDY\programming\python\output.py", line 3, in <module>
    lang[0] = 'P'
TypeError: 'str' object does not support item assignment

 

 

 

 

No.029 replace 메소드

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

string = 'abcdfe2a354a32a'

 

 

입력) replace() 함수를 활용하여 string 변수의 스트링값 중 a를 A로 변환한다.

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

 

출력)

Abcdfe2A354A32A

 

 

 

 

No.030 replace 메소드

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

string = 'abcd'

string.replace('b', 'B')

print(string)

 

입력) abcd 문자열이 그대로 출력된다. 해당 변수가 replace()함수를 호출해서 실행은 됐으나 문자열 교환은 이루어지지 않는다. 정확히 표현하면 객체에 대한 리턴은 이루어지나 원본 값은 변경하지 않는다.

따라서 치환된 리턴 값을 출력하고 싶으면 별도 변수지정을 해서 출력해야 한다.

string = 'abcd'
string.replace('b', 'B') # 함수호출은 이루어졌으나 원본 값에는 영향주지 않는다.
print(string) # 원본값이 그대로 출력된다.

##########################################################################

string2 = 'abcd'
new_string = string2.replace('b', 'B') # 변수값 지정
print(new_string) # 변경된 값이 저장된 변수를 출력하면 치환된 값이 출력된다.

 

출력)

abcd
aBcd

 

댓글