본문 바로가기

Programming/Python

Do it! 공부단 2일차 | ch02 자료형_숫자형과 문자열 자료형

01 숫자형

  • 숫자형(Number)은 숫자 형태로 이루어진 자료형이다.
  • 익히 써왔듯이 정수형, 실수형, 8진수와 16진수 등을 표현한다.
  • ** 연산자는 x의 y제곱을 나타내며, // 연산자는 나눗셈 후 몫을 반환한다.

 

02 문자열 자료형

문자열(String)은 문자, 단어 등으로 구성된 문자들의 집합이다.

 

02-1 문자열 만들기

  • 문자열을 만들 땐 큰따옴표("), 작은따옴표('), 큰따옴표 3개("""), 작은따옴표 3개(''')를 사용한다.
  • 문자열에 따옴표를 포함시키고 싶을 땐 백 슬래시(\)를 사용한다.
>>> food = 'Python\'s favorite food is perl'
>>> print(food)

 

여러 줄인 문자열을 변수에 대입하고 싶을 땐 연속된 따옴표('''혹은 """)를 사용한다.

>>> multiline = '''
... Life is too short
... You need python
... '''
>>> print(multiline)

 

02-2 문자열 연산하기

파이썬에서는 문자열을 더하거나 곱할 수 있다.

 

문자열을 더해보자.

>>> head = "Python"
>>> tail = "is fun!"
>>> head + tail
'Pythonis fun!'

 

문자열을 곱해보자

>>> a = "python"
>>> a * 2
'pythonpython'

 

문자열의 길이를 구할 때는 len 함수를 사용한다.

>>> len(a)
6

 

02-3 문자열 인덱싱과 슬라이싱

인덱싱(Indexing)은 무엇인가를 가리킨다는 의미이고, 슬라이싱(Slicing)은 무엇인가를 잘라낸다는 의미이다.

 

인덱싱의 예시를 보자.

>>> a = "Life is too short, You need Python"
>>> a[0]
'L'
>>> a[-1]
'n'

문자의 배열이라고 생각하면 된다. 자릿수는 0부터 세며, 뒤에서부터 읽을 땐 마이너스(-) 기호를 사용한다.

* 0과 -0은 똑같기 때문에 변수명[0]변수명[-0]은 같은 값을 반환한다. 

 

슬라이싱의 예시를 보자. 한 문자가 아닌 단어를 출력할 땐 슬라이싱을 사용한다.

>>> a[0:5]
'Life '
  • 슬라이싱은 변수명[시작 번호:끝 번호]와 같이 사용한다.
  • 끝 번호에 해당하는 것은 포함하지 않는다(수식으로 나타내면 0 <= 변수명 < 5).
  • 공백 문자 역시 다른 문자와 동일하게 취급한다.
  • 아래 코드처럼 끝 번호를 생략하면 시작 번호 부터 그 문자열의 끝까지, 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 출력한다. 
>>> a[19:]
'You need Python'
>>> a[:17]
'Life is too short'

 

슬라이싱은 다음과 같이 응용이 가능하다.

>>> a = "20210303Rainy"
>>> year = a[:4]
>>> day = a[4:8]
>>> weather = a[8:]
>>> year
'2021'
>>> day
'0303'
>>> weather
'Rainy'

 

문자열을 수정하고 싶을 땐 인덱싱이 아닌 슬라이싱으로 접근한다. 

>>> a = 'pithon'
>>> a[:1] + 'y' + a[2:]
'python'

위 예제를 a[1] = 'y'처럼 바꿀 수는 없다.

 

02-4 문자열 포매팅

문자열 안의 특정한 값을 바꿔야 할 경우(예) '현재 온도는 18도 입니다'에서 숫자 부분만 변경) 문자열 포매팅(Formatting) 기법을 사용한다. 문자열 포매팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.

 

문자열 포매팅 기법의 종류는 다음과 같다.

숫자 바로 대입하기

>>> "I eat %d apples." %3
'I eat 3 apples.'

 

문자열 바로 대입하기

>>> "I eat %s apples" %"five"
'I eat five apples'

 

숫자 값을 나타내는 변수로 대입하기

>>> "I eat %d apples" %number
'I eat 4 apples'

 

2개 이상의 값 넣기

>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days" %(number, day)
'I ate 10 apples. so I was sick for three days'

* %s는 문자열(string)을 변환하는 포맷 코드인데, 문자열이 아니더라도 어떤 형태의 값이든 변환해 넣을 수 있다.

 

포맷 코드와 숫자 함께 사용하기

>>> "%10s" %"hi"
'        hi'

포맷 코드 사이에 숫자를 넣으면 숫자만큼의 공간이 생기며 오른쪽으로 정렬된다(왼쪽 정렬 시 마이너스 기호 사용)

 

>>> "%0.5f" %3.42153264698
'3.42153'

포맷 코드 사이에 소수점 포인트를 넣으면 소수점 뒤 숫자를 원하는 자리까지 나타낼 수 있다. 

 

format 함수 사용하기

앞서 본 예제를 format 함수를 사용해 구현하면 다음과 같다.

>>> "I eat {0} apples".format(3)
'I eat 3 apples'
>>> "I eat {0} apples".format("five")
'I eat five apples'
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'

 

2개 이상의 값을 넣을 수도 있다. 아래 예시는 인덱스와 name = value 형태를 혼용한 것이다.

>>> "I ate {0} apples. so I was sick for {day} days".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days'

*format 함수에서 중괄호를 쓰고싶을 땐 {{}}처럼 두 개를 연속해서 사용해야 한다.

 

f 문자열 포매팅 사용하기

문자열 앞에 f 접두사를 붙여 사용한다.

>>> age = 24
>>> f'나는 내년에 {age+1}살이 된다'
'나는 내년에 25살이 된다'

* f 문자열 포매팅 기법은 파이썬 3.6부터 가능하다.

 

딕셔너리를 사용할 수도 있다.

>>> d = {'name':'동해', 'age':24}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]} 입니다.'
'나의 이름은 동해입니다. 나이는 24 입니다.'

* 딕셔너리는 Key와 Value를 한 쌍으로 갖는 자료형이다.

format 함수와 f 문자열 포매팅 둘 다 정렬, 공백 채우기, 소수점 표현이 가능하다.

 

02-5 문자열 관련 함수

  • 문자열 자료형은 자체 함수를 가지고 있다.
  • 문자열 내장 함수라고도 한다.
  • 이 함수를 사용하려면 문자열 변수 뒤에 '.'를 붙인 다음 함수 이름을 쓰면 된다.

 

대표적인 문자열 관련 함수는 다음과 같다.

변수.count(원하는 문자) 문자열 속 원하는 문자 개수 세기
변수.find(원하는 문자) 해당 문자가 처음 나온 위치 알려주기
변수.index(원하는 문자) 해당 문자가 처음 나온 위치 알려주기(존재하지 않으면 오류 발생)
원하는 문자.join(변수) 각각의 문자 사이에 원하는 문자 삽입
변수.lower / 변수.upper 알파벳을 소문자 / 대문자로 바꾸기
변수.lstrip / 변수.rstrip 왼쪽 / 오른쪽 공백 지우기
replace(바뀌게 될 문자열, 바꿀 문자열) 문자열 바꾸기
변수.split(기준) 기준에 따라 문자열 나누기(나눈 값은 리스트로 들어감)

 

 

자료형을 배우니까 파이썬을 왜 인간다운 언어라고 하는지 알겠다. 이거 이거 C 조금 써본 나한테도 완전 신세계잖아😮


이 글은 책 『Do it! 점프 투 파이썬』을 읽은 후 작성한 글입니다.

 

Do it! 점프 투 파이썬

코딩을 처음 배우는 중·고등학생과 나만의 경쟁력을 갖추고 싶은 문과생, 소프트웨어 시대에 대비하여 새로운 스펙을 준비하려는 직장인까지! 모두 ‘점프 투 파이썬’으로 프로그래밍을 시작

www.easyspub.co.kr