brunch

You can make anything
by writing

C.S.Lewis

by 김지영입니다 Jan 13. 2024

외계어 배우기 - 문제#1
WordCount : 문자열

Python을 배워봅시다

이제 첫 번째 문제를 해결하며 파이썬을 배워보자.


이전에 이야기한 것처럼 첫 번째로 우리가 해결할 문제는 "한 줄에 있는 단어의 수를 세는 것"이다.

도전 과제: 제공된 단어의 수를 세어 보세요. 여기서 말하는 단어는 일련의 소문자들입니다. hello 같은 단어뿐만 아니라 bbaabbb처럼 뜻이 없는 문자의 나열도 마찬가지로 단어로 봅니다.


책에는 이렇게 작성되어 있다. 여기서 '당연히' 내가 알고 있다는 생각을 버리고 문장을 명확히 설명하고자 한다면, 몇 가지 의문점이 생긴다. 

1. 단어란 정확히 무엇을 의미하는가?

2. 소문자들이라고 표현했는데, 그렇다면 대문자로 쓰인 것은 단어로 셀 수 없나?

3. 한 줄이란 어떻게 판단할 수 있는가?


1. 단어란, 공백이 없이 이루어진 문자들을 말한다. 다시 말하면 단어는 공백으로 구분할 수 있다.

2. 이 책의 도전과제는 굳이 '소문자'라고 표현했으므로 대문자를 세지 말라는 의미처럼 보인다. 그렇지만 일반적으로 '단어'라 하면 대소문자를 구별하지 않는다. 

3. 한 줄이란, 일반적으로 책의 판형이나 컴퓨터 화면에 맞춰진 눈에 보이는 한 개의 줄(라인)을 생각하기 쉽다. 그렇지만 한 줄이란 명백히 줄 바꿈 문자(엔터 등)로 구분되지 않은 문자들의 나열을 의미한다. 여기서 문자에는 문자, 숫자, 기호, 공백이 포함된다. 


다행히 이 책에서는 한 줄에 대한 의미를 명확히 알려주었다. 


입력: 입력은 소문자와 공백으로 구성된 한 줄의 텍스트입니다. 각 단어 쌍 사이에는 정확히 하나의 공백이 있으며, 첫 번째 단어 앞이나 마지막 단어 뒤에는 공백이 없습니다. 한 라인의 최대 길이는 80자입니다.
덧, 최대 길이가 80자인 이유는 일부 구형 텍스트 편집기나 시스템에서 한 줄에 80자 제한이 있을 수 있기 때문인 것 같다. 
덧, 이 책에서는 '한 줄'이라는 표현과 '한 라인'이라는 표현을 병행하는데, 같은 의미이다. 


이제, WordCount 문제에서 한 줄의 텍스트로 작업을 한다고 했고 텍스트는 파이썬에서 문자열(string) 값으로 저장되기 때문에 문자열에 대해 먼저 배워야 한다. 값(value)은 파이썬 프로그램의 기본 구성요소이며, 각 값에는 데이터 타입(유형)이 있고 데이터 타입은 값에 대해 수행할 수 있는 연산을 결정한다.


파이썬에서 문자열은 텍스트 기반 데이터를 저장하거나 조작하는 데 사용된다. 문자(characters)는 문자(letters), 숫자, 기호 또는 공백 문자일 수 있다. 


문자열 값을 만들려면 해당 문자들을 작은따옴표로 감싸는데, 문자열 안에 작은따옴표가 있다면 큰따옴표로 감싸면 된다. 


문자열 값들도 연산자를 사용할 수 있다. 맞다. 우리가 알고 있는 그 '사칙연산'을 포함한 연산을 말한다.


값을 나타내는 데이터 타입에 특화된 연산을 나타내는 메서드(method)도 있다. 메서드도 일종의 연산자이다. 값에 대해 메서드를 수행하는 것을 메서드 호출이라고 하며, 메서드를 호출하기 위해서는 값과 메서드명 사이에 점(.) 연산자를 배치한다. 문자열 메서드의 경우 점 연산자 뒤의 메서드명이 문자열 값에 소속된다는 의미이고, 메서드명 뒤에는 괄호가 필요하다. 메서드에 따라 괄호 안에 정보를 포함시켜 호출할 수도 아닐 수도 있다. 


문자열(string)


덧, 영상에 소리 없음 주의
1. 문자열을 표현하는 예를 보여준다. 작은따옴표와 큰따옴표 사용의 예를 보여주었다.
2. 문자열에서 사용할 수 있는 연산자의 예를 보여준다. 영상에서처럼 문자열 값 안에 표기된 공백도 문자열로 인식하는 것을 알 수 있다. 공백이 없는 빈 문자열은 빈 문자열로 반환한다.
3. 문자열 메서드에 대한 예를 보여준다. 대문자로 변환하는 upper 메서드와 strip 메서드를 보여주었는데, strip 메서드의 경우 인자 없이 호출하면 처음과 끝의 공백을 제거하고 인자로 호출하면 처음과 끝에서 주어진 인자값(문자)을 제거한다.
4. count 메서드의 경우 문자열 인자를 전달하면 문자열 안에서 해당 인자가 몇 개인지 세어준다.
5. 인자가 겹쳐서 나타나면, 첫 번째로 발견된 것만 세어준다.
6. 문자열 값에서 공백의 개수를 세어 보았다.
 
덧, 다음부터는 영상에 목소리나 자막을 입력해 볼까?


여기까지 공부하면 한 가지 깨닫게 되는 것이 있다. (물론 이미 처음부터 생각한 사람들도 있을 것이다.) 한 줄에 있는 단어 수는 공백 문자 + 1로 계산할 수 있다는 사실을...


다음 시간에는 정수와 변수, 입출력을 배우고 문제를 직접 풀어보도록 하자.


매거진의 이전글 외계어 배우기 - 무엇을 할 것인가
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari