16. 02장 파이썬 연습문제 풀어보기

16. 02장 파이썬 연습문제 풀어보기

지난번 포스팅까지 한 내용에 대해 파이썬 연습문제 를 풀어보는 시간을 가져 보겠습니다.
정답인지 아닌지는 모르지만 일단 결과를 출력하는데 의의를 가지겠습니다

파이썬 연습문제

1. 평균 점수 구하기

문제 : 나파이 님의 과목별 점수입니다. 나파이 님의 평균 점수를 구해 보세요

과목 – 점수
국어 – 90
영어 – 70
수학 – 84

Python
>>> k = 90
>>> e = 70
>>> m = 84
>>> tot = k + e + m
>>> avg = tot /3
>>> print(avg)
81.33333333333333

2. 홀수 짝수 구분하기

문제 : 자연수 11 이 홀수 인지 짝수 인지 구별해 보세요

Python
>>> a = 11
>>> if a % 2 == 0:   # 나눗셈 후 나머지를 구하는 연산자 %
...     print("짝수")
... else:
...     print("홀수")
...     
...
홀수

3. 주민등록 번호 나누기

문제 : 나파이 님의 주민등록번호는 891211-1076644 입니다. 나파이 님의 주민등록번호를 연월일(YYMMDD)와 그 뒤 숫자 부분으로 나누어 출력해 보세요

Python
>>> a = '891211-1076644'
>>> y = a[:6]
>>> s = a[7:]
>>> y
'891211'
>>> s
'1076644'

4. 주민등록번호 인덱싱 하기

문제 : 주민등록번호에서 뒷자리의 첫 번째 숫자는 남녀 성별을 구분해줍니다. 주민등록번호에서 성별을 구분해주는 숫자를 출력해 보세요

Python
>>> a = '891211-1076644'
>>> a[7]
'1'

5. 문자열 바꾸기

문제 : ‘a:b:c:d’ 라는 문자열이 있습니다. replace 함수를 사용해서 ‘a@b@c@d’ 로 바꾸어 출력해 보세요

Python
>>> a = 'a:b:c:d'
>>> a.replace(':', '@')
'a@b@c@d'

6. 리스트 역순 으로 정렬하기

문제 : 리스트 [2, 4, 7, 3, 1] 을 [7, 4, 3, 2, 1] 로 만들어 보세요

Python
>>> a = [2, 4, 7, 3, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4, 7]
>>> a.reverse()
>>> a
[7, 4, 3, 2, 1]

7. 리스트를 문자열로 만들기

[‘Python’, ‘is’, ‘so’, ‘hot’] 이라는 리스트를 ‘Python is so hot’ 이라는 문자열로 만들어서 출력해 보세요

Python
>>> a = ['Python', 'is', 'so', 'hot']
>>> b = a[0] + ' ' + a[1] + ' ' + a[2] + ' ' + a[3]   # 무식한 방법
>>> b
'Python is so hot'

풀이 :

Python
>>> a = ['Python', 'is', 'so', 'hot']
>>> b = ' '.join(a)   # join 함수 사용. 문자열 사이에 ' '를 삽입한다 
>>> b
'Python is so hot'

8. 튜플 더하기

튜플 (2, 4, 6) 에 숫자 5를 추가하여 (2, 4, 6, 5) 을 만들어 출력해 보세요

Python
>>> a = (2, 4, 6)
>>> b = (5,)
>>> b
(5,)
>>> c = a + b
>>> c
(2, 4, 6, 5)

9. 딕셔너리의 키

문제 :

>>> a = dict()
>>> a
{}

오류가 발생하는 경우와 설명을 기재해 보세요

  1. a[‘name’] = ‘computer’
  2. a[(‘a’,)] = ‘computer’
  3. a[[1]] = ‘computer’
  4. a[300] = ‘computer’

3번. a[[1]] = ‘computer’

Python
a[[1]] = 'computer'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

-> a 딕셔너리의 키 값으로 [1] 리스트 를 사용했기 때문.

10. 딕셔너리 pop 사용하기

문제 : 딕셔너리 a 에서 ‘O’ 에 해당되는 값을 추출해 출력해 보세요

>>>  a = {'K':95, 'O':84, 'R':70}
Python
>>> a = {'K':95, 'O':84, 'R':70}
>>> a.pop('O')
84

11. 리스트에서 중복 제거하기

문제 : 리스트 a 에서 중복 숫자를 제거해 출력해 보세요

>>> a = [2, 2, 3, 3, 3, 5, 5, 5, 1, 1, 1, 1, 6]
Python
>>> set(a)
{1, 2, 3, 5, 6}
>>> list(set(a))
[1, 2, 3, 5, 6]

12. 파이썬 변수 설명

문제 : 파이썬의 변수는 동일한 값에 여러 개의 변수를 선언 할 수 있습니다. a, b 변수를 선언한 뒤 a의 세번째 요소의 값을 변경하면 b 값은 어떻게 되는지 결과와 이유에 대해 설명해 보세요

>>> a = b = [2, 4, 6]
>>> a[2] = 5
>>> print(b)
Python
>>> a[2] = 5
>>> a
[2, 4, 5]
>>> b
[2, 4, 5]

-> a변수와 b변수는 동일한 메모리 주소를 가지고 있는 동일한 객체이므로 a 의 세번째 요소를 변경하면 b 의 세번째 요소도 같이 변경된다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
16. 02장 파이썬 연습문제 풀어보기

15. 파이썬 변수 – 자료형의 값 저장공간

15. 파이썬 변수 – 자료형의 값 저장공간

파이썬 변수 라 함은 이제껏 공부했던 자료형들의 값이 저장되는 공간이라고 보시면 됩니다.

파이썬 변수 만들기

Python
>>> a = 2
>>> b = "computer"
>>> c = [2, 4, 6]

여태까지 공부했던 예제 중에 위처럼 a, b, c 같은 것들을 모두 변수라고 합니다.
=(assignment) 기호를 사용해서 만들 수 있습니다.


C 언어나 JAVA 언어에서는 변수를 만들기 전 변수의 자료형을 직접 지정해야만 합니다.
그렇지만 파이썬에서는 저장된 값을 확인하여 파이썬 자체에서 자료형의 타입을 지정해 주기 때문에 프로그램이이 더 편리해 지는 장점이 있습니다.

변수 이름 = 변수에 저장할 값

변수의 의미

파이썬 변수 는 객체를 가리키는 것이기도 합니다.
객체란 자료형의 데이터(요소, 값)을 의미합니다.

Python
>>> a = [2, 4, 6]

위 처럼 a = [2, 4, 6] 이라고 선언이 되어 있다면 [2 ,4, 6] 값을 가지는 리스트 데이터, 즉 객체가 메모리에 생성되며 변수 a 는 [2, 4, 6] 이라는 리스트가 저장된 메모리의 주소를 가리키게 됩니다.
여기서 저장된 메모라ㅣ의 주소는 다음과 같이 확인할 수 있습니다.

Python
>>> id(a)
2922320944448

id 함수를 사용해서 변수가 가리키는 객체의 주소값을 리턴받을 수 있습니다.
즉 변수 a 가 가리키는 리스트 [2, 4, 6] 의 메모리상의 주소값은 2922320944448 임을 알 수 있습니다.

리스트 복사

위에서 생성된 a 변수를 b 변수에 대입해 보면 어떻게 될까요?

Python
>>> b = a
>>> id(a)
2922320944448
>>> id(b)
2922320944448

id 함수를 사용해 a 변수와 a변수를 대입한 b 변수의 메모리 주소를 확인해보면 동일하다는것을 알 수 있습니다.
결론적으로 a 와 b 는 완전히 동일하다고 볼수 있습니다.

Python
>>> a is b # a와 b가 동일한 객체인가?
True

a 와 b 가 동일한 객체 인가를 확인해 보면 True 값이 리턴 되는걸 확인 할 수 있습니다.
is 는 동일한 객체를 가리키는지 판단하는 파이썬 명령어 입니다.

Python
>>> a[1] = 3
>>> a
[2, 3, 6]
>>> b
[2, 3, 6]

위 예를 보면 a 의 1번째 주소에 3 을 입력해서 [2, 4, 6] 에서 [2, 3, 6] 으로 리스트 요소가 변경되었고,
b 를 확인해 보니 b 도 동일하게 바뀌어 있습니다.
이는 a 와 b 가 모두 동일하게 같은 리스트를 가지고 있기 때문입니다.

리스트 다른 주소로 복사

앞선 예처럼 항상 같은 주소를 가리키게 할 수는 없습니다.
b 변수를 생성할 때 a 변수의 객체를 그대로 가지고 오면서 다른 주소를 가리키도록 해보겠습니다.

1. [:] 이용하기

리스트 전체를 의미하는 [:] 를 이용해 보겠습니다.

Python
>>> a = [2, 4, 6]
>>> b = a[:]
>>> b
[2, 4, 6]
>>> a[1] = 3
>>> a
[2, 3, 6]
>>> b
[2, 4, 6]

리스트 전체를 의미하는 [:]를 사용해 b 변수를 생성하면 a 변수의 리스트 값이 변하더라도 b 리스트에는 변화가 없습니다.

Python
>>> id(a)
2922317937472
>>> id(b)
2922320893696

id 를 사용해 확인해 보면 다른 주소를 가리키는 걸 확인할 수 있습니다.

2. copy 모듈 이용하기

copy 모듈을 사용하는 방법도 있습니다.

Python
>>> from copy import copy
>>> a = [2, 4, 6]
>>> b = copy(a)
>>> b
[2, 4, 6]

import 를 통해서 copy 라이브러리를 선언하고 copy(a) 를 통해서 b 변수를 생성했습니다.
b 변수에 들어있는 리스트는 a 와 동일하게 생성됨을 알 수 있습니다.

Python
>>> a is b
False

하지만 앞서 사용해 봤던 is 명령어를 사용해 확인해 보면 a 와 b 는 다른 객체라는 걸 확인 할 수 있습니다.

Python
>>> c = a.copy()
>>> c
[2, 4, 6]

리스트 자료형의 자체 함수인 copy 함수를 사용해 c 변수를 생성해도 동일하게 같은 리스트 객체를 가지고 올 수 있습니다.

변수를 만드는 방법들

튜플로 변수 만들기

다음은 튜플로 변수 a 와 b 에 값을 대입하는 방법입니다.

Python
>>> a, b = ('computer', 'enjoy')

위와 동일 하게 다음처럼 사용 할 수 도 있습니다.

Python
>>> (a, b) = 'computer', 'enjoy'

튜플은 괄호를 생략해도 됩니다.

리스트로 변수 만들기

Python
>>> [a, b] = ['computer', 'enjoy']

여러개 변수에 같은 값 대입

Python
>>> a = b = 'computer'

두 변수의 값 변경

Python
>>> a = 2
>>> b = 4
>>> a, b = b, a
>>> a
4
>>> b
2

위 예처럼 a 에는 2, b 에는 4 라는 값을 대입했고 그 이후에 a, b = b, a 문장으로 그 값을 서로 바꿀수 있습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
15. 파이썬 변수 – 자료형의 값 저장공간

14. 파이썬 불(bool) 자료형에 대해 알아보자

14. 파이썬 불(bool) 자료형에 대해 알아보자

지난 포스팅에선 파이썬의 집합 자료형(set) 에 대해 공부해봤습니다.

이제 자료형에서 마지막으로 공부할 파이썬 불(bool) 자료형 입니다.

파이썬 불 자료형

파이썬 불(bool) 자료형 이란 참과 거짓 만을 나타내는 자료형입니다. True and False
True 와 False 는 파이썬 예약어로 첫 문자를 항상 대문자로 사용해야 합니다.

Python
>>> a = True
>>> b = False
>>> type(a)
<class 'bool'>
>>> type(b)
<class 'bool'>

a 와 b 라는 변수에 True 와 False 를 지정 후 에 type 함수를 사용해 두 변수의 자료형을 확인해봤습니다.
bool 이라고 자료형이 지정된 것을 확인 할 수 있습니다.
다른 자료형도 확인 하고 싶다면 type 함수를 사용하면 됩니다

Python
type(x)

불 자료형(bool)의 경우 조건문에서 리턴값으로도 사용됩니다.

Python
>>> 2 == 2
True
>>> 2 < 1
False

첫번째 예시에서 2 == 2 라고 한 경우에는 2와 2가 같은가 하는 질문입니다. 그에 따른 결과로 True 라고 리턴했습니다.
두번재 예시 2 < 1 의 경우에는 2 가 1보다 작은가 하는 질문입니다. 당연히 결과는 False 가 리턴됐습니다.

자료형의 참 거짓

자료형에서 참(True)과 거짓(False)을 구분 기준이 있습니다.
문자열이나 리스트, 튜플, 딕셔너리의 요소가 비어 있다면 모두 거짓이고 그렇지 않다면 참이 됩니다.
“”, [], (), {}, 0, None 는 모두 거짓 자료형입니다.

자료형에서 참과 거짓의 프로그램 예시

Python
>>> a = [2, 4, 6, 8]
>>> while a:
...    print(a.pop())
...
8
6
4
2

a 라는 변수에 [2, 4, 6, 8] 이라고 리스트 자료형을 생성했습니다.
조건문이 참일 경우에 a.pop() 를 반복 수행하라는 명령을 내렸습니다.
pop 함수를 사용해서 a 리스트에서 마지막 요소를 계속 꺼냈으므로 꺼낼것이 없으면 반복문에서의 조건문이 거짓이 되므로 while 문을 빠져나가게 됩니다.

Python
>>> if []:
...    print("참")
... else:
...    print("거짓")
...
거짓

위에서 잠깐 살펴 봤듯이 리스트 등의 요소가 비어있으면 거짓입니다.
따라서 [] 는 거짓이죠. 그래서 else 문장으로 가서 “거짓”을 출력하게 되는겁니다.

Python
>>> if [2, 4, 6]:
...   print("참")
... else:
...   print("거짓")
...

앞선 예와 반대로 이번에는 리스트에 요소들이 있습니다.
따라서 else 문장이 아닌 바로 “참”을 표시하고 끝나게 됩니다.
위 코드의 의미는 ‘[2, 4, 6] 이 참이면 “참”, 아니면 “거짓” 을 출력하시오’ 입니다.

불 연산

bool 함수를 사용해서 참과 거짓을 정확하게 식별할 수 있습니다.

Python
>>> bool("Hello")
True
>>> bool("")
False
>>> bool()
False

위 예처럼 빈 문자열이 아닌 “Hello” 만 참이고 나머지는 거짓이라고 출력합니다.

파이썬 자료형 정리

이번 포스팅까지 해서 파이썬의 기본적인 자료형에 대해서 공부해봤습니다.
기본 자료형으로 숫자 자료형, 문자열 자료형, 리스트, 튜플, 딕셔너리, 집합, 불 이 있다는 걸 알아봤습니다.
숫자형과 문자열 자료형의 경우에는 그냥 알 수 있는 부분이지만
리스트, 튜플, 딕셔너리, 집합, 불 로 넘어가면서 조금씩 헷갈릴 수 도 있을것 같습니다.

리스트는 [] 로 표현을 하고
튜플은 ()로 표현을 하며 변경 , 삭제, 삽입 등 을 할수 없고
딕셔너리 자료형의 경우 {} 로 표현을 해주며, key 와 value 가 쌍을 이루며 요소가 변하지 않는 튜플의 경우에는 딕셔너리의 key로 사용이 가능하다
집합의 경우 에는 합집합, 교집합, 차집합 이 있으며 집합 자료형의 경우 중복이 없고 순서도 없기 때문에 인덱싱을 하기 위해선 리스트나 튜플로 변경해서 인덱싱을 진행한다.
그리고 마지막으로 이번 포스팅에서 공부한 불 자료형의 경우에는 참과 거짓만을 나타내는 자료형이다.
이정도가 파이썬 자료형에 대한 간단한 정리정도가 되겠네요

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

14. 파이썬 불(bool) 자료형에 대해 알아보자

13. 파이썬 집합 자료형

13. 파이썬 집합 자료형

파이썬 리스트, 튜플 에 이어 딕셔너리 관련 함수에 대해 알아봤었는데
오늘은 파이썬 집합 자료형에 대해 알아보도록 하겠습니다.

파이썬 집합 자료형 만드는 방법

집합 자료형을 만들기 위해서는 set 이라는 키워드를 사용합니다

리스트 이용

Python
>>> a1 = set([2, 4, 6])
>>> a1
{2, 4, 6}

set() 식으로 괄호안에 리스트를 입력하여 만들수 있습니다

문자열 이용

Python
>>> a2 = set("soccer")
>>> a2
{'c', 'e', 'r', 'o', 's'}

비어있는 집합 자료형

Python
>>> a = set()
set()

집합 자료형 특징

위의 문자열 이용에서 보면 “soccer”라고 입력했는데 출력은 ‘c’도 하나만 나오고 순서도 엉망입니다.
집합 자료형 set 은 중복을 허용하지 않고, 순서가 없기때문입니다.
이런 특징으로 중복을 제거하기 위해 필터로도 사용되곤 합니다.

집합 자료형 set 요소 인덱싱

Python
>>> a1 = set([2, 4, 6])
>>> l1 = list(a1)
>>> l1
[2, 4, 6]
>>> l1[0]
2
>>> t1 = tuple(a1)
>>> t1
(2, 4, 6)
>>> t1[0]
2

리스트나 튜플의 경우 순서가 있기에 인덱싱을 해서 값을 얻을수 있지만 집합 자료형 set 의 경우에는 순서가 없다는 특징 때문에 인덱싱을 할 수 가 없습니다. 지난번에 본 딕셔너리의 경우도 마찬가지였죠
그래서 집합 자료형 set 에서 요소를 인덱싱 하기 위해서는 리스트나 튜플로 변환 뒤에 가능합니다.

교집합, 합집합, 차집합

교집합, 합집합, 차집합 을 구할때가 set 집합형 자료형을 유용하게 사용할 때입니다.
2개의 set 자료형 을 만들어 보겠습니다.

Python
>>> a1 = set([2, 3, 4, 5, 6])
>>> a2 = set([5, 6, 7, 8, 9])

교집합

a1 과 a2 의 교집합을 구해보겠습니다

Python
>>> a1 & a2
{5, 6}

교집합의 경우 ‘&’ 기호를 사용합니다. intersection 함수를 사용할수도 있습니다.

Python
>>> a1.intersection(a2)
{5, 6}
>>> a2.intersection(a1)
{5, 6}

a1 과 a2 의 교집합이나 a2 와 a1 의 교집합이나 같은 결과가 나오는 걸 볼 수 있습니다.

합집합

Python
>>> a1 | a2
{2, 3, 4, 5, 6, 7, 8, 9}

합집합은 중복된 값은 한 개씩만 표현 합니다
‘|’ 기호를 사용합니다.
아래처럼 union 함수를 사용하기도 합니다.

Python
>>> a1.union(a2)
{2, 3, 4, 5, 6, 7, 8, 9}

교집합에서와 마찬가지로 a2.union(a1) 의 경우에도 같은 결과를 볼수 있습니다.

Python
>>> a2.union(a1)
{2, 3, 4, 5, 6, 7, 8, 9}

차집합

Python
>>> a1 - a2
{2, 3, 4}
>>> a2 - a1
{8, 9, 7}

‘-‘ 마이너스 기호를 사용한 방법입니다.
difference 함수를 사용할 수 도 있습니다.

Python
>>> a1.difference(a2)
{2, 3, 4}
>>> a2.difference(a1)
{8, 9, 7}

집합 자료형 관련 함수들

요소 값 1개 추가(add)

만들어져 있는 집합 자료형 set 에 요소를 추가할 수 있습니다. 값을 1개만 추가시에는 add 를 사용할수 있습니다

Python
>>> a1 = set([2, 4 ,6])
>>> a1.add(5)
>>> a1
{2, 4, 5, 6}

5가 정렬되어 추가 되었습니다.

요소 값 여러개 추가

Python
>>> a1.update([7, 8, 9])
>>> a1
{2, 4, 5, 6, 7, 8, 9}

기존 1개 요소를 추가한 {2, 4, 5, 6}의 집합 자료형에서 {7, 8, 9}를 추가했습니다.

요소 값 삭제(remove)

특정 요소를 제거 하고 싶다면 remove 함수를 사용합니다.

Python
>>> a1.remove(6)
>>> a1
{2, 4, 5, 7, 8, 9}
  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
13. 파이썬 집합 자료형

12. 파이썬 딕셔너리 관련 함수

12. 파이썬 딕셔너리 관련 함수

지난번 파이썬 딕셔너리 자료형에 이어 파이썬 딕셔너리 관련 함수에 대해 알아보겠습니다.

파이썬 딕셔너리 관련 함수들

딕셔너리를 내가 원하는 대로 사용하기 위해서는 딕셔너리 자체 함수를 알고 있어야 합니다.

Key 리스트(keys)

Python
>>> a = {'name':'pyth', 'mobile':'010-1234-9999', 'birth': '0403'}
>>> a.keys()
dict_keys(['name', 'mobile', 'birth'])

위처럼 a.keys()라고 명령하면 딕셔너리 a의 key만을 모아서 dict_keys 라는 객체를 리턴합니다.

참고로 파이썬 버전 2.7 버전 까지는 a.keys() 함수를 호출 했을 때 리스트를 리턴 했습니다. 리스트를 리턴 하기 위해서는 메모리 낭비가 발생하는데 이런 메모리 낭비를 줄이기 위해 파이썬 3.0 이후 버전 부터는 dict_keys 객체를 리턴 하도록 변경되었습니다.
dict_values, dict_items 같은 객체 역시 파이썬 3.0 이후에 추가된 것들입니다.
파이썬 3.0 이후 버전에서 리스트를 리턴 값으로 필요한 경우에는 list(a.keys()) 라고 명령 하면 됩니다.
dict_keys, dict_values, dict_items 객체는 리스트 변환 없이 for문 같은 기본적인 반복 구문에서 사용 할 수  있습니다.

dict_keys 객체 사용방법

Python
>>> for i in a.keys():
...    print(i)
...
name
mobile
birth

리스트 사용법과 똑같지만, 리스트 고유 함수인 append, insert, pop, remove, sort 함수는 사용 할 수 없습니다.
그리고 파이썬 문법으로 for 문 다음에 오는 print 문은 반드시 들여쓰기를 적용 해야 합니다.

dict_keys 객체를 리스트로 변환

Python
>>> list(a.keys())
['name', 'mobile', 'birth']

앞서 언급한 참고사항 에서 처럼 파이썬 3.0 이후 버전에서는 dict_keys 객체를 리스트로 변환하기 위해 list(딕셔너리.keys()) 라고 명령해주면 됩니다.

Value 리스트(values)

Python
>>> a.values()
dict_values(['pyth', '010-1234-9999', '0403'])

딕셔너리의 key를 얻기 위해 a.keys() 라고 했듯이 마찬가지로 values 만 얻고 싶으면 valuse 함수를 호출하면 됩니다. 결과처럼 dict_values 객체를 리턴합니다.

Key, Value 쌍 얻기(items)

Python
>>> a.items()
dict_items([('name', 'pyth'), ('mobile', '010-1234-9999'), ('birth', '0403')])

items 함수를 호출하면 Key 와 Value 를 쌍으로 묶은 튜플을 dict_items 객체로 반환하게 됩니다.

Key, Value 쌍 모두 지우기 (clear)

Python
>>> a.clear()
>>> a
{}

clear 함수는 딕셔너리의 모든 요소들을 삭제합니다.
빈 딕셔너리는 {}로 표현 되는 걸 볼 수 있습니다.

Key 로 Value 얻기(get)

Python
>>> a = {'name':'pyth', 'mobile':'010-1234-9999', 'birth': '0403'}
>>> a.get('name')
'pyth'
>>> a.get('mobile')
'010-1234-9999'

위의 예처럼 get(x) 라고 했을때 x Key에 대응하는 value 를 반환하게 됩니다.

Python
>>> a['name']
'pyth'

a[‘name’] 과 같은 결과임을 알 수 있습니다

Python
>>> print(a.get('no'))
None
>>> print(a['no'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'no'

기존 예처럼 기존에 a.get(‘name’) 과 a[‘name’] 은 ‘name’ 이라는 key 가 존재하기에 같은 결과를 반환 했지만 방금 예처럼 ‘no’ 라는 key 가 존재 하지 않을 경우에 get 함수를 사용했을 때는 None 이라고 거짓 이라는 결과를 반환하지만 a[‘no’] 라고 바로 없는 key를 호출 하였을 경우에는 오류를 발생하게 됩니다.

key가 없을 경우 디폴트 값 지정

Python
>>> a.get('no', 'hoohoo')
'hoohoo'

a 딕셔너리에는 ‘no’ key 가 존재하지 않기에 ‘hoohoo’ 라는 디폴트값을 리턴 해 줍니다.

key 가 딕셔너리 안에 존재하는 지 확인(in)

Python
>>> 'name' in a
True
>>> 'phone' in a
False

‘name’ 이라는 문자열이 a 라는 딕셔너리 안에 있는지 in 함수를 사용해 봤습니다. ‘name’ 은 key 로 존재하기에 True 라고 결과를 반환해줍니다. 반면 ‘phone’ 라는 문자열은 존재하지 않기에 False 를 반환해 줍니다.
in 은 key 가 존재하는지 확인 하기 위해 사용할 수 있습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
12. 파이썬 딕셔너리 관련 함수

11. 파이썬 딕셔너리 자료형

11. 파이썬 딕셔너리 자료형

파이썬 딕셔너리 의미

딕셔너리의 사전적 의미는 사전이라는 뜻입니다.
이름 = 스마트, 나이 = 20살. 이런식으로 대응 관계를 나타내는 자료형이라고 보시면 됩니다.
이를 연관 배열(Associative array) 또는 해시(Hash)라고도 합니다.

파이썬 딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소의 값을 구하는게 아니라
key를 통해 Value 값을 얻습니다.
city 라는 단어의 뜻을 찾기 위해 전체 내용을 처음부터 끝까지 찾아보는 것이 아니라 city라는 단어가 있는곳을 바로 찾아가는것입니다.

딕셔너리 만들기

{Key1:Value1, Key2:Value2, Key3:Value3, ...}

딕셔너리의 각각의 요소는 Key:Value 의 형태로 이루어져 있고, 쉼표로 구분됩니다.

>>> dic = {'name':'pey', 'phone':'010-1234-9999', 'birth':'0402'}

위의 예에서 key는 각각 ‘name’, ‘phone’, ‘birth’ 가 되며, 각각의 key 에 해당하는 Value는 ‘pey’, ‘010-1234-9999’, ‘0402’ 가 됩니다.

Python
>>> a = {1: 'hello'}
>>> b = {'a': [1, 2, 3]}

위처럼 key로 정수값 1, Value 로 문자열 ‘hello’를 입력받았습니다.
b처럼 key ‘a’ 에 리스트 [1, 2, 3] 을 넣을수도 있습니다.

딕셔너리 쌍 추가, 삭제

딕셔너리 쌍 추가

Python
>>> a = {1: 'p'}
>>> a[3] = 'y'
>>> a
{1: 'p', 3: 'y'}

key 1 에 value ‘p’ 인 딕셔너리 a 에 key 3 인 value ‘y’가 추가 되었습니다.

Python
>>> a['name'] = 'py'
>>> a
{1: 'p', 3: 'y', 'name': 'py'}

딕셔너리 a에 {‘name’:’py’} 쌍이 추가 되었습니다.

Python
>>> a[5] = [2, 4, 6]
>>> a
{1: 'p', 3: 'y', 'name': 'py', 5: [2, 4, 6]}

key 5에 리스트 vlaue [2, 4, 6] 의 쌍이 또 추가 되었습니다.

딕셔너리 요소 삭제

Python
>>> del a[1]
>>> a
{3: 'y', 'name': 'py', 5: [2, 4, 6]}

기존 딕셔너리 a 에서 key 1의 value ‘p’ 쌍이 삭제되었습니다.
딕셔너리를 삭제할때 del a[key]를 입력해주면 딕셔너리 a에서 key 에 해당하는 쌍이 삭제가 됩니다.

딕셔너리 사용법

예를 들어 사람이름과 특기를 한쌍으로 표현한다면 딕셔너리를 사용하는게 간편합니다

딕셔너리에서 key 사용해 value 값 얻기

Python
>>> jumsoo = {'gpt': 20, 'romio': 90}
>>> jumsoo['gpt']
20
>>> jumsoo['romio']
90

기존 리스트나 튜플, 문자열에서는 요소의 값을 구하고자 할때 인덱싱이나 슬라이싱 방법을 사용합니다.
그에 비해 딕셔너리는 바로 key를 사용해 value 를 구합니다.
key ‘gpt’의 value 는 20, key ‘romio’의 value 는 90 을 반환합니다
위처럼 딕셔너리변수이름[key] 를 사용하면 key 의 value 값을 가져올 수 있습니다.

Python
>>> a = {1:'p', 2:'y'}
>>> a[1]
'p'
>>> a[2]
'y'

딕셔너리 a 에는 {1:’p’, 2:’y’} 라는 key와 value 가 있습니다.
a[1]이라고 했을때 리스트나 튜플에서는 a의 1번째 리스트나 튜플에 있는 값을 가지고 오지만
딕셔너리에서는 a의 key 1 에 해당하는 value 를 가지고 옵니다

Python
>>> a = {'p':1, 'y':2}
>>> a['p']
1
>>> a['y']
2

딕셔너리 a 에 key ‘p’, ‘y’와 이에 대응하는 value 1, 2를 넣어봤습니다.
key ‘p’, ‘y’를 이용해 해당하는 value값은 1과 2를 반환합니다.

딕셔너리 만들때 주의할 점

딕셔너리에서 key는 고유한 값입니다. key값이 중복된다면 하나를 제외한 나머지는 모두 무시됩니다

Python
>>> a = {1:'p', 1:'y'}
>>> a
{1: 'y'}

위의 예처럼 key 값이 중복될 경우 딕셔너리에서는 어떤 값을 가지고 올지 알 수가 없어집니다.
그리고 key값에 리스트 자료형은 사용할수가 없습니다. 이유는 리스트는 변할수 있기때문입니다.
반면 튜플은 변하지 않는 속성을 가지고 있어 딕셔너리의 key로 사용할수가 있습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

10. 파이썬 튜플 자료형

10. 파이썬 튜플 자료형

지난 시간에 파이썬 자료형 중 파이썬 리스트의 연산에 대해 공부해봤습니다

이번엔 다음 단계인 파이썬 튜플 자료형에 대해 공부해보겠습니다

파이썬 튜플 자료형

파이썬 튜플 만들기

튜플(tuple)은 이전에 공부했던 리스트 와 거의 흡사하지만 다른점도 있습니다.
리스트는 [ ] 으로 요소를 둘러싸지만 튜플은 ( ) 로 둘러쌉니다.
그리고 리스트는 요소값에 대해서 생성이나 삭제, 수정이 가능하지만 튜플은 요소값을 바꿀수가 없습니다.

Python
>>> a1 = ()
>>> a2 = (2,)
>>> a3 = (2 ,4, 6)
>>> a4 = 2, 4, 6
>>> a5 = ('p', 'y', ('th', 'on'))

리스트 자료형과 둘러싸는 괄호만 다른 모습을 볼수 있는데 튜플 a2의 경우 처럼 요소가 1개만이라면 요소 뒤에 콤마(,)를 반드시 붙여야 합니다.
그리고 a4처럼 괄호를 생략해도 된다는 차이가 있습니다.

앞서 말씀드린대로 리스트와 튜플은 요소값에 대해서 생성, 삭제, 수정이 되느냐 안되느냐 하는 큰 차이점이 있습니다.
만약 프로그래밍을 할때 절대로 바뀌면 안되는 값이 있다면 리스트 대신 튜플을 사용해 주면 됩니다.

튜플 요소 삭제, 수정을 시도했을때

튜플의 요소는 변경하거나 지울수 없습니다.

튜플 요소값을 삭제하려 했을때

Python
>>> a1 = (2, 4, 'p', 'y')
>>> del a1[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> del a1(0)
  File "<stdin>", line 1
    del a1(0)
        ^^^^^
SyntaxError: cannot delete function call

튜플 a1 의 0번째 주소에 있는 요소를 리스트 처럼 del 을 이용해 지우려 하면 튜플에서는 항목 삭제를 지원하지 않는다는 오류가 발생합니다.
그래서 튜플 a1 을 튜플 표시형식대로 해서 del 을 해보면 del 함수를 사용할 수 없다고 나옵니다.

튜플 다루기

튜플 인덱싱

Python
>>> a1 = (2, 4, 'p', 'y')
>>> a1[0]
2
>>> a1[3]
'y'

위처럼 튜플의 선언은 괄호로 하지만 인덱싱은 리스트와 마찬가지로 [ ] 로 진행합니다.

튜플 슬라이싱

Python
>>> a1[1:]
(4, 'p', 'y')

리스트와 마찬가지로 튜플의 0 번째 주소 다음인 1 번째 주소의 요소 4부터 끝까지 반환을 합니다.

튜플 더하기

Python
>>> a2 = (6, 8)
>>> a3 = a1 + a2
>>> a3
(2, 4, 'p', 'y', 6, 8)

위 예를 언뜻 보면 튜플을 변경한것 같지만 실제로는 a3는 새로운 튜플에 튜플 a1 과 a2를 더한 것 입니다.

튜플 곱하기

Python
>>> a3 = a2 * 3
(6, 8, 6, 8, 6, 8)

튜플 a3에 튜플 a2 를 3번 반복해서 나온 결과입니다.
변경은 불가하지만 위처럼 기존에 만들었던 튜플을 덮어씌기 형태로 새로 만드는것은 가능한가봅니다.
검색해 보니 위 같은 내용은 이후에 튜플의 고유id를 찾는 방법으로도 이 튜플이 기존에 존재하던게 아닌 새로운 튜플이란걸 확인 할 수 있습니다.

튜플 길이 구하기

Python
>>> len(a1)
4

튜플 a1 에는 (2, 4, ‘p’, ‘y’) 요소들이 들어있고 4개의 요소가 들어있으므로 길이는 4가 반환 됩니다.
리스트 자료형에서는 sort, insert, remove, pop 같은 내장 함수가 있었지만 튜플 자료형의 경우에는 요소값을 변경할수가 없기때문에 리스트와 같은 내장 함수가 없습니다.

다음 포스팅에는 딕셔너리 자료형에 대해 공부해 보겠습니다.
참고적으로 딕셔너리는 key와 value의 형태로 존재하는데 key의 경우에는 고유한 값이므로 리스트 자료형을 사용할수 없고 튜플 자료형은 사용할수가 있습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
파이썬 튜플 자료형

9. 파이썬 리스트 연산

9. 파이썬 리스트 연산

이번에는 파이썬 리스트 연산에 대해 알아보려 합니다.
벌써 파이썬 공부하기 8번째 포스팅이네요
지난번에는 파이썬 리스트 자료형에 대해서 공부해봤습니다.

파이썬 리스트 연산하기

문자열과 마찬가지로 파이썬 리스트 역시 + 기호를 사용해서 더한다던가 * 기호를 사용해서 원하는 문자열을 원하는 갯수만큼 반복해서 사용할수 있습니다.

리스트 더하기(+)

Python
>>> a = [2, 3, 4]
>>> b = [5, 6, 7]
>>> a + b
[2, 3, 4, 5, 6, 7]

문자열에서와 마찬가지로 + 기호를 사용해 두 개의 리스트를 합쳤습니다.

리스트 반복(*)

Python
>>> a = [2, 3, 4]
>>> a * 4
[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4]

역시 문자열과 마찬가지로 리스트 a * 4 를 해주면 그만큼 반복해서 출력을 해줍니다.

리스트 길이(len)

Python
>>> len(a)
3

len 함수는 문자열, 리스트, 튜플, 딕셔너리 에서도 길이를 구하기 위해 자주 사용됩니다.

리스트 연산 오류

Python
>>> a[1] + "hello"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

리스트 a[1] 의 요소값은 3 입니다. 숫자와 “hello”를 합치라는 명령이기때문에 TypeError 가 발생합니다.
숫자와 문자를 합치기 위해서는 “hello”를 숫자로 바꿀수는 없기에 숫자 3을 문자형으로 바꿔주면 됩니다.

Python
>>> str(a[1]) + "hello"
'3hello'

str 함수는 정수나 실수 같은 숫자형 자료를 문자열로 바꿔주는 파이썬 내장 함수 입니다

리스트의 수정과 삭제

리스트의 요소값은 수정 또는 삭제가 가능합니다.

리스트 요소값 수정

Python
>>> a = [2, 3, 4]
>>> a[1] = 5
>>> a
[2, 5, 4]

리스트 a 의 두번째 요소값 3 이 5로 변경되었습니다.

리스트 요소값 삭제(del)

Python
>>> del a[2]
>>> a
[2, 5]

del 함수로 리스트의 요소값을 삭제할 수 있습니다. 위 예는 리스트 a 의 세번째 요소인 4 를 삭제했습니다.

del 객체 (객체 : 파이썬에서 사용되는 모든 자료형)

슬라이싱 기법으로 리스트 요소 삭제

Python
>>> a = [2, 3, 4, 5, 6]
>>> del a[2:]
>>> a
[2, 3]

리스트 a 의 요소중 세번째인 4부터 모두 한꺼번에 삭제를 할수 있습니다.

파이썬 리스트 관련 함수

문자열에서와 마찬가지로 리스트 변수 이름 뒤에 ‘.’ 을 붙여서 리스트 관련 함수를 사용할수 있습니다.

리스트 요소 추가(append)

Python
>>> a = [2, 3, 4]
>>> a.append(5)
>>> a
[2, 3, 4, 5]

append(x) 라고 표현하면 리스트의 마지막에 x 라는 요소를 추가하라는 명령입니다.

리스트에 리스트 요소 추가

Python
>>> a.append([6,7])
>>> a
[2, 3, 4, 5, [6, 7]]

앞에 추가한 숫자 5 뒤로 리스트 [6, 7]을 요소로 추가했습니다.

리스트 정렬(sort)

Python
>>> a = [1, 4, 6, 3]
>>> a.sort()
>>> a
[1, 3, 4, 6]

sort 함수는 리스트의 요소를 순서대로 정렬해 줍니다.

Python
>>> a = ['b', 'e', 'd']
>>> a.sort()
>>> a
['b', 'd', 'e']

문자열의 경우 알파벳 순서대로 정렬을 해줍니다.

리스트 뒤집기(reverse)

Python
>>> a.reverse()
>>> a
['e', 'd', 'b']

위에 정렬해서 나온 결과값 [‘b’, ‘d’, ‘e’] 을 뒤집어서 [‘e’, ‘d’, ‘b’] 가 출력되었습니다.

인덱스 반환(index)

Python
>>> a.index('e')
0

리스트 a 의 최종 값 [‘e’, ‘d’, ‘b’] 에서 ‘e’ 는 첫번째 주소인 0 에 위치하고 있습니다.

Python
>>> a[0]
'e'

a[0]을 입력했을때 나오는 출력값으로 확인이 가능합니다.

Python
>>> a.index('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'a' is not in list

리스트 a 에 존재하지 않는 ‘a’ 값을 index로 찾아보면 값이 없다고 오류가 발생하게 됩니다.

리스트에 요소 삽입(insert)

Python
>>> a.insert(1, 't')
>>> a
['e', 't', 'd', 'b']
>>> a.insert(3, 5)
>>> a
['e', 't', 'd', 5, 'b']

첫번째는 리스트 최종값 [‘e’, ‘d’, ‘b’]의 1번째 주소인 ‘d’ 자리에 ‘t’ 요소를 삽입했습니다.
두번째는 ‘t’를 삽입한 최종값 [‘e’, ‘t’, ‘d’, ‘b’]의 3번째 주소인 ‘b’자리에 숫자 5를 삽입했습니다.

리스트 요소 제거(remove)

Python
>>> a.remove(5)
>>> a
['e', 't', 'd', 'b']

remove 는 리스트 요소에서 첫번째로 나오는 요소를 삭제하는 함수입니다.
리스트 요소인 5를 제거했습니다. 두개이상의 요소가 있더라도 첫번째 요소만 삭제가 됩니다.

리스트 요소 꺼내기(pop)

Python
>>> a.pop()
'b'
>>> a
['e', 't', 'd']
>>> a.pop(2)
'd'
>>> a
['e', 't']

pop 함수는 리스트 요소중 마지막 요소를 출력해주고 그 요소를 삭제합니다. 즉 꺼낸다고 볼수 있죠.
최종 리스트였던 [‘e’, ‘t’, ‘d’, ‘b’] 에서 ‘b’ 를 출력하고 삭제해서 [‘e’, ‘t’, ‘d’] 만 남습니다.
pop()가 아니라 pop(2) 라고 입력하면 [‘e’, ‘t’, ‘d’]에서 2번째 요소인 ‘d’를 삭제합니다.

리스트 요소 y의 개수 세기(count)

Python
>>> a = [2 ,4, 5, 4, 2, 1]
>>> a.count(2)
2

리스트 a 에서 2 의 갯수를 카운트 합니다.

리스트 확장(extend)

Python
>>> a.extend([5, 6])
>>> a
[2, 4, 5, 4, 2, 1, 5, 6]
>>> b = [9, 0]
>>> a.extend(b)
>>> a
[2, 4, 5, 4, 2, 1, 5, 6, 9, 0]

extend 함수에서는 확장 개념이기때문에 리스트형 자료만 올수 있습니다.
리스트 a 의 최종값 [2 ,4, 5, 4, 2, 1] 에 리스트 [5, 6]을 더해서 [2, 4, 5, 4, 2, 1, 5, 6] 의 결과가 나오고
b 의 리스트에 [9, 0] 을 확장해서 [2, 4, 5, 4, 2, 1, 5, 6, 9, 0]의 최종값을 가지고 옵니다.

이 포스팅은 <위키독스> 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

파이썬 리스트 연산

8. 파이썬 리스트 자료형

8. 파이썬 리스트 자료형

이전에 파이썬 문자열 포매팅, 문자열 함수에 대해 공부해봤습니다

프로그래밍을 할 때 숫자와 문자열 만으로는 부족한 점이 많습니다.
파이썬에서는 그 부족한 부분을 채울 수 있는 자료형이 존재하는데 그게 바로 파이썬 리스트 자료형 과 파이썬 리스트 함수 입니다.

파이썬 리스트 만들고 사용하기

Python
number = [2, 4, 6, 8, 10]

위처럼 리스트를 만들때는 대괄호 ‘[ ]’로 감싸주고 각각의 요소들의 값은 쉼표 ‘,’로 구분해 줍니다.

다양한 리스트 예

Python
>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Language', 'is', 'the', 'key', 'to', 'unlocking', 'happiness']
>>> d = [1, 2, 3, 'Language', 'is']
>>> e = [1, 2, 3, ['Language', 'is']]

a 는 비어있는 리스트입니다. 동일한 표현은 a = list() 입니다
b 는 숫자를 요소로 가지고 있는 리스트입니다
c 는 문자열을 요소로 가지고 있는 리스트입니다.
d 는 숫자와 문자열을 함께 요소로 가지고 있는 리스트입니다.
e 는 리스트 자체를 요소로 가지고 있습니다.

리스트 인덱싱, 슬라이싱

리스트도 문자열 과 마찬가지로 인덱싱과 슬라이싱 이 가능합니다.

리스트 인덱싱

Python
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
Python
>>> a[0]
1

a[0]은 리스트 의 첫번째 요소입니다.

Python
>>> a[0] + a[2]
4

첫번째 요소 a[0] 과 세번째 요소 a[2] 의 값을 더한 결과입니다.
1+3 의 결과로 4가 출력됩니다.

Python
>>> a[-1]
3

a[-1]은 문자열과 마찬가지로 리스트의 마지막 요소를 출력하게 됩니다.

Python
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0]
1
>>> a[-1]
['a', 'b', 'c']
>>> a[3]
['a', 'b', 'c']

a[-1]은 리스트 의 마지막 요소 [‘a’, ‘b’, ‘c’]를 출력해주고, a[3] 역시 리스트 의 네번째 요소를 출력하기때문에 동일한 값이 출력이 됩니다.

Python
>>> a[-1][0]
'a'

리스트 a[-1] 요소인 [‘a’, ‘b’, ‘c’] 에서 첫번째 요소를 출력해주라는 의미라 ‘a’ 가 출력되었습니다.

Python
>>> a[-1][1]
'b'
>>> a[-1][2]
'c'

이전 예와 마찬가지로 리스트 a[-1] 요소인 [‘a’, ‘b’, ‘c’] 에서 두번째, 세번째 요소를 출력해 주었습니다.

삼중 리스트 인덱싱

Python
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'

리스트 의 다중 중첩을 자주 사용하면 혼란스럽기 때문에 자주 사용하지는 않습니다
그래도 위 내용을 살펴보면 a 리스트 안에 [‘a’, ‘b’, [‘Life’, ‘is’]] 리스트가 포함 되어 있고, 그 리스트 안에 또 [‘Life’, ‘is’] 리스트가 포함 되어 있습니다.
a[2][2][0] 는 리스트 a의 세번째 요소 인 리스트 [‘a’, ‘b’, [‘Life’, ‘is’]] 에서 다시 세번째 요소 인 리스트 [‘Life’, ‘is’]의 첫번째 요소를 출력하라는 의미입니다.

리스트 슬라이싱

슬라이싱 의 의미는 ‘나눈다’ 입니다.

Python
>>> a = [2, 4, 6, 8, 10]
>>> a[0:2]
[2, 4]
Python
>>> b = "246810"
>>> b[0:2]
'24'

위 두가지 예를 보면 문자열과 사용방법이 동일합니다

Python
>>> a = [2, 4, 6, 8, 10]
>>> b = a[:2]
>>> c = a[2:]
>>> b
[2, 4]
>>> c
[6, 8, 10]

변수 b 는 a 리스트의 첫번째 요소부터 세번째 요소를 포함하지 않고 두번째 요소까지 의 값을 가지고 있습니다.
변수 c 는 a 리스트의 세번째 요소부터 마지막까지의 값을 가지고 있습니다.

중첩된 리스트에서 슬라이싱

Python
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5]
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2]
['a', 'b']

a[2:5]는 리스트 a에서 세번째부터 여섯번째를 포함하지 않는 다섯번째까지 요소의 값. 그리고 네번째 요소의 값은 리스트 [‘a’, ‘b’, ‘c’] 입니다. 그래서 출력되는 값은 3, [‘a’, ‘b’, ‘c’], 4
두번째 a[3][:2] 는 리스트 a 의 네번째 요소의 값은 리스트 [‘a’, ‘b’, ‘c’]에서 첫번째부터 세번째를 포함하지 않는 두번째까지의 요소값 이기에 [‘a’, ‘b’] 가 출력됩니다.

  • 본 포스팅은 <위키독스> 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
파이썬 리스트 자료형

7. 파이썬 문자열 포매팅, 문자열 함수

7. 파이썬 문자열 포매팅, 문자열 함수

파이썬 f 문자열 포매팅

지난번 format 함수에 대해 알아봤는데

이어서 오늘은 파이썬 문자열 포매팅 과 문자열 함수 에 대해 알아보겠습니다.
파이썬 3.6버전 이후로는 f 문자열 포매팅 기능을 사용할수 있다고 합니다.
혹시라도 본인이 사용하는 파이썬 버전이 3.6 버전 미만이라면 주의해야 합니다

Python
>>> name = '스마트'
>>> age = 40
>>> f'저의 이름은 {name}입니다. 나이는 {age}입니다.'
'저의 이름은 스마트입니다. 나이는 40입니다.'

위 예처럼 문자열 앞에 f 를 붙이면 f 문자열 포매팅 기능을 사용할수 있습니다
name, age 같은 변수를 생성후 그 값을 참조 할 수 있습니다.

표현식 지원

Python
>>> age = 30
>>> f'저는 올해 {age+1}살이 되었습니다.'
'저는 올해 31살이 되었습니다.'
  • 표현식 : 문자열 변수 안에서 변수와 +. – 등 의 수식을 함께 사용하는 것

딕셔너리

Python
>>> d = {'name':'스마트', 'age':40}
>>> f'저의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'저의 이름은 스마트입니다. 나이는 40입니다.'
  • 딕셔너리 : key 와 value 를 한쌍으로 가지는 자료형

정렬

Python
>>> f'{"Hello":<10}'   # 왼쪽 정렬
'Hello     '
>>> f'{"hello":>10}'   # 오른쪽 정렬
'     hello'
>>> f'{"hello":^10}'   # 가운데 정렬
'  hello   '

공백 채우기

Python
>>> f'{"hello":=^10}'   # 가운데 정렬하고 '=' 문자로 공백 채우기
'==hello==='
>>> f'{"hello":!<10}'   # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hello!!!!!'

소수점 표현

Python
>>> x = 3.1456267
f'{x:0.5f}'   # 소수점 5자리까지만 표현
'3.14563'
>>> f'{x:10.5f}'   # 소수점 5자리까지 표현하고 총 자리수를 10으로 맞춤
'   3.14563'

{ } 문자 표시

Python
>>> f'{{ or }}'
'{ or }'

문자열 내장 함수

문자열 자료형의 자체 함수 – 문자열 변수 뒤에 ‘.’를 붙이고 함수 이름을 써줍니다.

문자의 갯수(count)

Python
>>> a = "rabbit"
>>> a.count('b')
2

문자열 중 문자 ‘b’ 의 개수를 리턴합니다.

문자의 위치 1(find)

Python
>>> a = "Language is the key to unlocking happiness"
>>> a.find('g')
3
>>> a.find('i')
9

문자열 중 문자 ‘g’, ‘i’ 의 첫번째 위치를 반환합니다.
찾는 문자나 문자열이 존재하지 않는다면 -1 을 반환합니다.

  • 파이썬은 0 부터 숫자가 시작되므로 g 의 위치는 4 가 아닌 3 이 됩니다.

문자의 위치 2(index)

Python
>>> a.index('t')
12
>>> a.index('x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

find 와 마찬가지로 문자열 중 문자의 첫번째 위치를 반환합니다.
하지만 찾는 문자나 문자열이 존재하지 않는다면 오류를 반환합니다.

문자열 삽입(join)

Python
>>> ",".join('python')
'p,y,t,h,o,n'

문자열 python의 각각의 문자사이에 ‘,’ 를 삽입합니다.
join 함수는 문자열 뿐 아니라 리스트나 튜플에서도 입력으로 사용할수 있습니다.

join 의 리스트 사용 예

Python
>>> ",".join(['p', 'y', 't', 'h', 'o', 'n'])
'p,y,t,h,o,n'

소문자 -> 대문자(upper)

Python
>>> a = "hello"
>>> a.upper()
'HELLO'

대문자 -> 소문자(lower)

Python
>>> a = "HELLO"
>>> a.lower()
'hello'

왼쪽 공백 삭제(lstrip)

Python
>>> a = " hello "
>>> a.lstrip()
'hello '

문자열의 가장 왼쪽의 한 칸 이상의 공백을 모두 지웁니다.

오른쪽 공백 삭제(rstrip)

Python
>>> a.rstrip()
' hello'

문자열의 가장 오른쪽의 한 칸 이상의 공백을 모두 지웁니다.

양쪽 공백 삭제(strip)

Python
>>> a.strip()
'hello'

문자열 양쪽의 한 칸 이상의 공백을 모두 지웁니다.

문자열 변경(replace)

Python
>>> a = "Language is the key to unlocking happiness"
>>> a.replace("Language", "Python")
'Python is the key to unlocking happiness'

replace(원본 문자열, 타켓 문자열)

문자열 나누기(split)

Python
>>> a.split()
['Language', 'is', 'the', 'key', 'to', 'unlocking', 'happiness']
>>> b = "p:y:t:h:o:n"
>>> b.split(":")
['p', 'y', 't', 'h', 'o', 'n']

a.split() 처럼 괄호안에 아무 값도 없을 경우 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 줍니다.
b.split(“:”) 처럼 괄호안에 특정 값이 있을 경우에는 괄호안의 값을 기준으로 해서 문자열을 나누어 줍니다.
이렇게 나누어진 값들은 리스트에 들어가게 됩니다.

파이썬 문자열 포매팅, 문자열 함수