[파이썬 기초] 자료형(문자열)과 기본 연산(1)

롬롬·2021년 8월 2일
0

파이썬 기초

목록 보기
5/6

안녕하세요!😚 오늘은 자료형 중 문자 타입에 대해서 포스팅하려 합니다. 바로 이전 게시글에서 변수에 대하여 포스팅했는데요, 오늘 문자열에 대해서 실습할 때 변수를 잔뜩 사용할 예정입니다! 변수 포스팅에서 배운 내용을 잘 떠올리며 이번 포스팅을 읽어주시면 좋을 것 같습니다.🤗

이번 문자열 포스팅에서는 문자열이란 무엇이며 어떻게 생성하는지, 특수 문자 표현에 대한 정리, 문자열 포맷팅과 인덱싱 등에 대해 2번에 거쳐 다룰 예정입니다. 그러면, 문자열이 뭔지에 대해서 먼저 알아볼까요?🤔

파이썬 IDLE 또는 개발툴(IDE)을 실행해주세요 :)
(참고로, 저는 아나콘다의 주피터 노트북으로 실습을 하였습니다!)

1. 문자열

문자열은 문자로 이루어진 자료형 집합을 의미합니다. 그러면 문자열을 한번 생성해볼까요?😚

- 문자열 생성하기

문자열은 따옴표를 사용하여 만드는 방법이 있고, 내장함수 str()로 자료형을 바꿔줄 수 있습니다.

  • 따옴표 사용하여 만들어보기
a = '문자열입니다.'
b = "문자열입니다!"
print(a)
print(b)
문자열입니다.
문자열입니다!
  • str() 내장함수로 문자열 만들기
str(123) # 정수를 문자열로
'123'

따옴표를 사용해서 문자열을 생성할 때, 문자열이 중간에 끊겨 SyntaxError가 발생하지 않도록 주의해야 합니다.

  • Synatax Error 발생
"영희가 물었다. "철수야, 숙제했어?"" # 큰 따옴표 안에 큰 따옴표 사용
error 발생
  • ' '로 코드 수정
    문자 열 안에 큰 따옴표를 사용하고 싶다면, 밖에 따옴표를 작은 따옴표로 감싸주면 됩니다. 그러면 위의 코드를 수정해볼게요!
'영희가 물었다. "철수야, 숙제했어?"' # ' ' 로 " " 감싸기
'영희가 물었다. "철수야, 숙제했어?"'
  • """를 사용하여, 문자열 수정
    따옴표 세개( """ """ ) 를 연속으로 사용하면 됩니다. 파이썬은, 세개의 따옴표 내부의 모든 자료를 통으로 문자열로 인식합니다.
    => 참고로, """는 여러줄 주석(Multi-Line Comment)을 달 때 많이 활용
"""
영희가 물었다. "철수야, 숙제했어?"
철수는 생각했다. '영희는 숙제를 안하나?'
"""
'\n영희가 물었다. "철수야, 숙제했어?"\n철수는 생각했다. \'영희는 숙제를 안하나?\'\n'

2. 특수문자(Escape Character) 표현

  • , 줄바꿈 등 특수한 의미의 문자를 표현하려면 역슬래쉬(\)를 사용합니다.
print('파이썬\n1. 문자열\n2. 숫자열')
파이썬
1. 문자열
2. 숫자열
print('파이썬\t1. 문자열\t2. 숫자열')
파이썬	1. 문자열	2. 숫자열
  • 이외에도 자주 사용되는 Escape Character에 대하여 정리한 표입니다.🙂

    표현의미
    \"문자 " 출력
    \'문자 ' 출력
    \n줄바꿈/새로운 줄 출력
    \t탭 출력
    $달러 출력
    \백슬래쉬 출력
print("\"I love Python.\"")
"I love Python."

3. 문자열 연산

  • 문자열을 더해서 하나의 문자열로 연결할 수 있습니다. 이때는 덧셈 기호인 '+'를 사용하는데요, 아래의 예시를 한 번 살펴볼까요?
'10 곱하기 5는 ' + '50 입니다'
'10 곱하기 5는 50 입니다'
  • 곱셈기호인 '*'을 사용하여, 문자열을 반복해서 출력할 수도 있습니다.
'안녕'*5
'안녕안녕안녕안녕안녕'
  • 내장함수 len()을 사용하여, 문자열의 길이를 출력할 수도 있습니다. 만약 문자열에 공백이 포함되어 있다면, 길이를 출력할 때 그 공백도 포함하여 계산됩니다. 문자열의 길이를 출력가능하다면, 길이를 활용해서 여러 연산을 할 수도 있겠죠? 앞으로 len()도 엄청 많이 사용할 예정입니다. 꼭 기억해주세요~!😉
a = "You only live once."
print(len(a))
19

4. 문자열 포맷팅

문자열에서 중요한 것 중 하나는 문자열 포맷팅이 있습니다. 포맷팅을 사용하면 문자열을 자유롭게 사용할 수 있는데요, 파이썬을 사용하여 구구단을 출력해본다고 가정해 봅시다.

"1 곱하기 1은(는) 1 입니다." 부터 시작해서, "9 곱하기 9은(는) 81입니다"까지 출력한다고 하면, 숫자 부분만 계속해서 바뀌는 것을 알 수 있을 겁니다.

문자열 내에서 특정 값을 바꿔야 할 경우, 문자열 포맷팅을 사용하면 됩니다. 문자열 포맷팅은 문자열 안에 특정 값을 삽입해 줄 수 있습니다. 그럼 이제 예시를 살펴볼까요?

문자열 포맷팅

% 연산자를 사용하여 문자열에 숫자 혹은 문자열을 삽입하는 방법을 먼저 소개해드리겠습니다. 그 전에 문자열 포맷 코드에 대해 간단히 보고 넘어갈게요!😎

  • 문자열 포맷 코드

    코드설명
    %s문자열(string)
    %d정수(integer)
    %f실수(float)
    %c문자 1개(character)
    %%문자 %

    위의 표에서 문자열, 정수, 실수의 포맷 코드가 가장 많이 사용되며, 저희도 이 3가지 포맷 코드를 앞으로 많이 이용할 예정입니다. 위의 포맷 코드 외에도 8진수와 16진수에 관한 포맷 코드도 있는데요, %o, %h로 쓸 수 있습니다.

  • 숫자 삽입
    %d를 사용하여, 숫자를 문자열에 삽입합니다.

'오늘의 최고 기온은 %d도 입니다.' % 36
'오늘의 최고 기온은 36도 입니다.'
  • 문자 삽입
    %s를 사용하여, 문자를 문자열에 삽입합니다.
'저의 별명은 %s 입니다.' % 토끼
'저의 별명은 토끼 입니다.'
  • 변수 대입
    변수에 담긴 문자/숫자를 문자열에 삽입합니다. 숫자나 문자를 삽입했을 때와 같은 결과가 나옵니다!
temperature = -10
'오늘의 최저 기온은 %d도 입니다.' % temperature
'오늘의 최저 기온은 -10도 입니다.'
  • 여러 값 삽입
    문자열 안에 2개 이상의 값을 삽입하고 싶을 때도 있겠죠? 이것도 포맷팅으로 해결할 수 있습니다.
info = '최고'
temperature = 35.8626841
print('오늘의 %s 기온은 %f도 입니다.' % (info, temperature))
'오늘의 최고 기온은 35.8도 입니다.'
  • 소수점 표현
    바로 위의 예시에서 %f를 사용하여 최고 온도를 출력해보았는데요, 만약에 소수점 첫 번째 자리까지만 출력하고 싶다면 어떻게 해야할까요?
info = '최고'
temperature = 35.8626841
print('오늘의 %s 기온은 %0.1f도 입니다.' % (info, temperature))

%0.1f에서 ' . '은 소수점을, 뒤의 숫자 '1'은 첫째 자리를 의미합니다. %0.3f라고 하면 세 번째 자리까지만 출력하라는 것을 의미하겠죠?

format 함수 사용


format 함수를 사용하여 문자열 포맷팅을 수행하는 방법이 있습니다. 이 방법이 조금 더 파이썬스러운 방법이라고 볼 수 있는데요, 중괄호{}에 값을 대입하고 괄호() 안에 숫자를 넣으면 포맷팅이 끝납니다.

format 함수도 % 연산자와 마찬가지로 숫자/문자 삽입이 가능하고 변수와 여러 값을 추가해 줄 수 있습니다. 살짝 다른 점은 인덱스를 활용할 수 있다는 건데요, 다음 예시들을 통해 쉽게 이해하실 수 있을 겁니다!😃

  • format 예시
print('제가 가장 좋아하는 음식은 {}입니다.'.format('치킨'))
'제가 가장 좋아하는 음식은 치킨입니다.'
  • 인덱스 사용 비교
print('{}x{}={}'.format(6,7,42))
print('{1}x{2}={0}'.format(42,6,7))
print('내 이름은 {}이고, 나이는 {old}살이야.'.format('신짱구', old = 8))
'6x7=42'
'6x7=42'
'내 이름은 신짱구이고, 나이는 8살이야.'

여기서 주의해야할 점은 다음 포스팅에서도 다루겠지만, 파이썬은 숫자를 셀 때 1이 아닌 0부터 셉니다. 이 점 꼭 기억해주세요!🙄

문자열(1) 끝!

이렇게 1부를 마칩니다! 바로 다음 포스팅에서는 문자열에 대하여 이어서 설명하겠습니다. 오늘 내용도 정말 중요하니까 꼭 복습해주세요~!!
그럼, 다음 포스팅에서 만나요~~🤍

profile
🤗🤗🤗

0개의 댓글