본문 바로가기
Programming/Python

Python 연습문제 (2022.12.22)

by 슬픈 야옹이 2022. 12. 28.

1. 문자열 변수 v_str에 임의의 문자열을 입력하고 다음 조건에 맞는 문자열을 출력한다.
1-1. 1번째와 3번째 문자열을 출력한다.
1-2. 4번째에서 8번째 까지의 문자열을 출력한다.
1-3. 맨 뒤 5개의 문자만 역순으로 출력한다.

 

v_str = "kitri_st07"

 

1-1.

print(v_str[0])

print(v_str[2])

파이썬 문자열은 배열처럼 인덱스로 접근할 수 있다. 여느 프로그래밍 언어가 그렇듯 인덱스는 0부터 시작한다.

즉 1번째 문자 -> 인덱스 0

3번째 문자 -> 인덱스 2

 

1-2.

print(v_str[3:8])

1-1에서 설명한 것처럼 4번째부터 8번째까지의 문자열은 인덱스 3부터 7까지를 의미한다.

파이썬 문자열은 사실상 문자('a', 'b', 'c', ...) 의 배열이라 볼 수 있다.

그 말은 즉 배열에 사용하는 연산을 문자열에도 사용할 수 있다는 의미이다.

물론 완전히 같지는 않다. 사용법이 상당부분 비슷하다는 의미로 해석하면 될 것 같다.

어떠한 문자열 s에서 s[n:k]는 문자열 s의 인덱스 n부터 인덱스 (k-1) 까지의 문자열을 의미한다.

예제에서 v_str = "kitri_st07" 이므로 v_str[3:8]은 v_str의 인덱스 3부터 인덱스 7까지, 즉 "ri_st"가 된다.

 

1-3.

print(v_str[-1:-6:-1])

파이썬 문자열의 인덱스에 음수를 넣으면 문자열의 뒤 부터 접근할 수 있다.

예컨데 s = "hello"라면, s[-1]은 s의 제일 끝 문자, 즉 'o'를 가리킨다. 물론 배열에서도 같은 방식으로 사용 가능하다.

이것은 다른 언어에서 찾아보기 힘든 강력한 기능이며,

파이썬이 데이터를 다루기 가장 좋은 언어라는 평가를 받는 이유 중 하나다.

 

1-2에서 s[n:k]는 s의 인덱스 n부터 k-1까지의 문자열이라고 했었다.

사실 이 표현식에는 생략된 것이 하나 있다. 바로 오프셋인데, 정리하자면 다음과 같다.

s[start, end, offset] => 문자열 s의 start 인덱스부터 end-1 인덱스까지, offset 칸만큼 건너뛰어 읽은 결과.

예컨데, s="hello World!"라 했을 때, s[0:5:1]이라면, 인덱스 0부터 4까지 1칸씩 읽으므로 "hello"가 된다.

s[0:5:2]라면? 두 칸씩 건너뛰어 읽으므로 인덱스 0, 2, 4의 문자가 뽑혀 나온다. 즉 결과는 "hlo"

 

이 두가지 개념을 가지고 문제로 돌아오자.

v_str[-1:-6:-1]은 무슨 의미일까?

문자열의 가장 끝 문자부터(v_str[-1]) 끝에서 5번째 문자까지(v_str[-5]) 뒤로 한칸씩 읽으라는 얘기다.

즉 v_str의 제일 끝 5개 문자가 나올 것이다. 결과는 "70ts_"

 

 

솔직히 글 내용이 불친절하다. 어디서부터 설명해야 할지 감이 안 잡힌다.

정말 기초적인 개념들은 책이나 인터넷만 찾아봐도 잘 설명한 글이 많이 있으니 참고하길 바란다.

감이 잡히면 이 글이 무슨 얘기를 하는건지 이해할 수 있을 것이다.