본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 프로그래밍 강좌/Python [리뉴얼중]
  3. [파이썬 강좌] #3-2 파이썬 훑어보기

[파이썬 강좌] #3-2 파이썬 훑어보기

· 댓글개 · KRFile

문자열 더 다뤄보기

이 앞전에서 문자열과 숫자의 차이에 대해 알아봤습니다. 오늘은 문자열에 대해 조금 더 알아보고 파이썬을 훑어보는건 마치도록 하겠습니다.

 

print("Hello World")
print('Hello World')

시작전 배웠던 내용을 조금 다시 복습해보자면 우선 우리 일상생활에서의 글자들을 파이썬에선 "문자열" 이라고 하며 쌍따옴표 혹은 홑따옴표로 묶는다고 하였습니다.

 

[블럭*print(1+1)*] 은 따옴표로 묶여있는 구문이 아니기 때문에 [블럭*1+1*] 을 계산하는 계산식이 되지만, [블럭*print("1+1")*] 은 쌍따옴표로 묶여있기 때문에 전체가 문자열이 되어 계산식이 아닌, 그냥 수식을 적어둔 [블럭*통짜 문자열*]이 되는 것 입니다.

 

print("Hello" + "World")
>>> HelloWorld

또한 문자열은 독특하게도 숫자처럼 더해준다면, 두 문자열이 합쳐져 하나의 문자열로 결합된다고 배웠습니다.

혹시 문자열을 더하는 것 이외에도 다른 연산이 가능할까요? 

 

print("안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요")

예를 들어서 "안녕하세요" 라는 문자를 10번 반복해서 "안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요" 라는 문구를 출력해야 한다면 다음과 같이할 수 있을 것 입니다.

print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")
print("안녕하세요", end="")

또는 다음과 같은 방법도 가능합니다. print() 를 사용하면 자동으로 엔터가 추가되니 앞에서 배운 end 를 사용해 엔터를 제거한 것입니다.

 

하지만 프로그래밍을 배우는 여러분들은 이런식으로 노가다를 하는 방법을 극도로 피해야 합니다. 나중에 더 훌륭한 프로그래머가 되고 싶다면 수작업은 피하고, 계산을 통해 더 똑똑한 방법을 찾아보아야 합니다.

사람이 고생하는게 아닌 컴퓨터를 고생시켜야 합니다. 사람이 고생해선 안됩니다

 

이렇게 문제에 대해 수작업(노가다)으로 코드를 박아넣는 행위를 보통 "하드코딩 한다" 라고 표현합니다.

 

print("안녕하세요" * 10)
>>> 안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요안녕하세요

사실 위의 코드는 파이썬에서 다음과 같이 작성하면 한 문장에 끝낼 수 있습니다.

위 코드는 "안녕하세요" 를 10번 반복해서 문자열로 만들어 출력해! 라는 뜻입니다.

 

그런데 이 코드를 보다보면 다음과 같이 의문이 들 수 있습니다.

??? : 앞전에 문자열하고 숫자를 더하는건 안된다고 했는데 왜 곱하는건 가능한거지?

 

사실 합리적인 의심은 맞습니다. 곱하기를 풀어내면 더하기인데 왜 문자열 곱하기 숫자는 되는거지?

이것이 되는 이유는 파이썬은 문자열에 숫자를 곱하는것에 대해 다음과 같이 해석하기 때문입니다.

 

print("안녕하세요" * 10)

사실 "안녕하세요" 를 10번 곱하란건 똑같은 "안녕하세요" 를 10번 더하란 것과 동일합니다.

사탕 4개가 든 봉지가 3개 있으면 사탕의 갯수는 4 * 3 입니다. (사탕 4개 1 봉지) + (사탕 4개 1 봉지) + (사탕 4개 1 봉지) 로 해석이 되는 것이죠. 곱하기는 앞에 있는걸 뒤에 수만큼 더하라는 의미입니다.

 

print("안녕하세요" + "안녕하세요" + "안녕하세요" + "안녕하세요" + "안녕하세요" + "안녕하세요" + "안녕하세요" + "안녕하세요" + "안녕하세요" + "안녕하세요")

"안녕하세요" 를 10번 곱하라는 것은 이렇게 안녕하세요를 10번 더하라는 의미가 되며, 파이썬에서 문자열을 더하는 것은 단순히 결합하는 것이기 때문에 안녕하세요가 10번 결합된 통짜 문자열이 나오게 되는 것 입니다! 이해가 되시죠 :) ?

 

문자열에서 연산을 하는건 더하기 (결합) 와 곱셈 (결합 반복) 정도만 기억하시면 됩니다. 문자열에 빼기나 나누기를 하는건 불가능하므로 기억하지 않으셔도 됩니다.

 

print("엔터는\n이렇게 쓰세요.")

그리고 지금까지 문자열을 출력 시 중간에 엔터가 들어가면 출력이 불가했지만 문자열 중간에 엔터를 넣고 싶으시면 앞에서 배운 이스케이프 문자인 "\n" 를 사용하시면 됩니다. 이스케이프 문자는 따옴표, 쌍따옴표와 같이 이미 사용중인 문자를 그대로 출력하고 싶을때 \(백슬래시) 를 추가해 출력하는 역할과 동시에, \n 와 같이 특수한 용도로 사용하는 문자도 있습니다.

 

\n는 New Line - 새 줄의 약어로 엔터를 대표하는 특수문자(이스케이프 문자)입니다.

print(
    """
    (1절)
    동해물과 백두산이 마르고 닳도록
    하느님이 보우하사 우리나라만세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세

    (2절)
    남산위에 저 소나무 철갑을 두른듯
    바람서리 불변함은 우리기상 일세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이보전하세

    (3절)
    가을하늘 공활한데 높고 구름없이 
    밝은달은 우리가슴 일편단심일세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이보전하세

    (4절)
    이 기상과 이 맘으로 충성을 다하여
    괴로우나 즐거우나 나라사랑하세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이보전하세
    """
)

그러나 "\n" 를 매번 써주는건 귀찮고 코드도 매우 지저분해지므로 엔터가 포함된 문자를 한꺼번에 출력하고 싶다면 쌍따옴표, 혹은 홑따옴표 3개를 이용하면 됩니다.

 

출력하고 싶은 문자열을 따옴표 3개 (문자열은 홑따옴표던, 쌍따옴표던 구분하지 않기 때문에 아무거나 써도됨) 로 묶으면 그 안에 있는 문자열은 마음대로 엔터를 쳐도 제대로 인식이 됩니다.

 

저것도 문자열의 표현 방식 중 하나이며 엔터를 포함한 문자열을 표현하고 싶을때 사용합니다.

 


더 이상 깊게 다루면 훑어보기의 의미가 없어지므로 파이썬을 전체적으로 사용하면서 훑어보는건 여기까지 하고, 다음 시간부터는 한 주제 한 주제씩 심층적으로 다뤄보면서 파이썬을 음미하는 시간을 가져보도록 하겠습니다. 

SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.