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. 파이썬 집합 자료형

인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법

인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법

평상시 스마트폰으로 동영상을 많이들 보실겁니다
컴퓨터 앞에 앉아 있다면 컴퓨터를 통해 인터넷상에서 동영상을 보실수도 있구요
인터넷에서 동영상을 보신다면 기본적으로는 웹브라우저(예전 익스플로러, 크롬, 파이어폭스, 그리고 크롬 기반으로 네이버에서 만든 웨일 등)에 재생하는 형태가 많으실거 같네요

인터넷 동영상 재생 안됨


그런데 마냥 유익하거나 재미있는 동영상을 시청하려고 보는데 전에는 잘 나왔던거 같은데
인터넷 동영상 재생이 깨지거나, 재생이 안되거나 이상하게 일그러져 나오는 경우가 있습니다.
재생이 깨지거나, 재생이 안되는 경우에는 워낙 인터넷 글들이 많은데
이런 식으로 인터넷 동영상이 재생이 안되는 경우는 찾기가 힘들어 해결 방법을 올려보려 합니다.
그럼 인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법 에 대해 알아보겠습니다

인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법

인터넷 동영상 재생 안됨 원인 파악

인터넷 동영상 재생이 안되는 경우는 여러가지 원인이 있을 수 있습니다.
대표적으로 인터넷 연결이 안되는 경우, 인터넷 웹 브라우저 호환성이 문제가 있는 경우, 비디오 코덱이 문제가 있는 경우 등 원인은 다양합니다.

간단하게 여러가지 경우 처리방법을 간단히 명시해드리면

인터넷 연결 문제

인터넷이 끊겼다면 당연히 동영상 재생이 힘들겠죠. 그런데 인터넷 연결상태가 불안정하거나 속도가 느릴경우에도 인터넷 동영상 재생은 잘 안될수 있습니다.
당연히 인터넷 연결문제를 해결해야겠죠

인터넷 브라우저 호환성 문제

예를 들어 저같은 경우 네이버 웨일 브라우저를 메인으로 사용합니다.
네이버 웨일 브라우저는 크롬을 기반으로 만들어진 브라우저입니다.
웨일에서 안된다면 크롬에서도 안될 가능성이 높겠죠.
그런데 웨일에서는 동영상 재생이 잘 안되는데 크롬에서 재생을 해보니 잘 됩니다.
그럼 웨일 브라우저에서 뭔가 문제가 있다는 거겠죠.
크롬이나 웨일에서는 다 안 되는데 엣지나 익스플로러, 파이어폭스 등 다른 브라우저에서는 잘된다면 크롬, 웨일 다 문제가 있는 확률이 높아집니다.

그 외 인터넷 동영상 재생 안됨 원인

인터넷 브라우저 캐시와 쿠키가 동영상 재생이 안되는 원인 일 수도 있습니다.
이도 저도 안된다면 인터넷 브라우저의 캐시와 쿠키를 삭제해보는것도 방법일 수 있습니다.

인터넷 동영상 재생 안됨(크롬, 웨일 브라우저)

아래 처럼 동영상이 나온다면 정말 짜증 날것 같아요
크롬이나 웨일브라우저를 사용해서 동영상을 재생하는데 아래 동영상 샘플처럼 인터넷에서 동영상을 재생했는데 화면이 일그러져서 나온다면 브라우저의 설정을 확인해서 해결하는 방법이 있습니다.

인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법

웨일 브라우저 기준 해결방법(크롬도 마찬가지)

웨일 브라우저 기준으로 말씀드리겠습니다.
크롬이라고 하더라도 설정은 비슷합니다.
브라우저 오른쪽 위에 점 세개를 클릭하면 메뉴가 나옵니다.

인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법

설정화면에 들어가면 아래 처럼 성능 및 기타 로 들어갑니다
그러면 시스템 탭으로 들어가게 되는데
나오는 메뉴 중에

가능한 경우 하드웨어 가속 사용

이라고 되어있는 옵션을 비활성 해줍니다.
아래 이미지처럼요
그다음 옆에 나오는

다시 시작

을 클릭해서 브라우저를 다시 시작해 주면 됩니다.

인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법

해보셨나요
이제 복구된 인터넷 창으로 가셔서 동영상을 확인해 보시기 바랍니다.
어떤가요?

인터넷 동영상 재생 안됨(크롬, 웨일) 해결방법

아까와는 다르게 동영상 들이 정상적으로 화면에 표시 되는 걸 보실수 있습니다.

인터넷 동영상 재샘 안됨 이라는 문제를 가지고 포스팅을 해봤습니다.
저의 경우처럼 크롬이나 크롬을 기반으로 한 네이버의 웨일 브라우저에서 인터넷 동영상을 재생을 하려는데 일그러짐, 깨짐 현상이 발생해서 해결방법을 찾고자 하실 경우 위에 말씀드린대로 어렵지 않은 방법으로 해결을 해볼 수 가 있습니다.

그런데 위의 방법대로 진행을 했음에도 해결이 안된다면 또 다른 원인이 있을수도 있겠네요
그럼 아래 방법을…. ㅜㅜ

혼자서 윈도우 재설치 하는 방법(윈도우10 설치)

일단 이 포스팅은 크롬이나 웨일 브라우저에서 인터넷 동영상이 깨지거나 일그러진거에 대한 해결책이기때문에 다른 문제가 있는 경우라면 다른 각도에서 원인을 찾고 방법을 알아내야 할거 같습니다.

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(“:”) 처럼 괄호안에 특정 값이 있을 경우에는 괄호안의 값을 기준으로 해서 문자열을 나누어 줍니다.
이렇게 나누어진 값들은 리스트에 들어가게 됩니다.

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

6. 파이썬 포맷 코드, format 함수

6. 파이썬 포맷 코드, format 함수

지난번 파이썬 문자열 연산, 포매팅, 인덱싱, 슬라이싱까지 진행했었습니다.


이번에는 파이썬 포맷 코드와 format 함수에 대해 알아보겠습니다.

파이썬 포맷 코드와 숫자 함께 사용

파이썬 포맷 코드는 문자열안에 원하고자 하는 어떤 숫자나 문자 등을 입력하기 위해 사용합니다.
그런데 포맷 코드를 숫자와 함께 사용했을때 더 유용해집니다.

1. 정렬과 공백

Python
>>> "%5s" % "Hi"
'   Hi'

%5s 는 전체 길이가 5 이고 ‘Hi’ 라는 문장을 오른쪽으로 정렬해서 보여줍니다. 앞에 3 자리가 남는데 빈자리는 공백으로 채워집니다.

Python
>>> "%-15sjimmy." % "Hi"
'Hi             jimmy.'

위에서는 전체 길이가 15 이고 -(마이너스) 이기 때문에 왼쪽 정렬을 합니다. 전체 길이가 15 이지만 jimmy 라는 단어는 제외되어있습니다.

2. 소수점 표현

Python
>>> "%0.5f" % 3.41425627
'3.41426'

3.41425627 의 실수를 소수점 다섯번째 자리까지만 나타냅니다. ‘.'(점) 뒤의 숫자 5 는 소수점 뒤에 나올 숫자의 갯수입니다.

Python
>>> "%10.5f" % 3.41425627
'   3.41426'

위 예를 살펴보면 3.41425627 ‘.'(점) 뒤의 소수점 자릿수는 “%0.5f” 와 동일하지만 ‘.'(점) 앞의 숫자가 틀려졌습니다.
이건 이전 예에서 나왔던 것처럼 전체 길이가 10 자리인 문자열 공간을 뜻하고 10 이 양의 정수이니 오른쪽 정렬을 하는 걸로 알 수 있겠네요
그래서 결과를 보면 아래처럼 전체 길이가 10 자리 인 것을 알 수 있습니다.

Python
'   3.41426'
 1234567890
Python
>>> "%-10.5f" % 3.41425627
'3.41426   '

궁금해서 -10 으로도 해봤습니다
-10인 경우에는 위의 “%-15sjimmy.” 때처럼 왼쪽 정렬을 하는것을 알 수 있습니다.

format 함수를 사용한 포매팅

좀 더 발전된 스타일로 문자열 포맷을 지정하려면 문자열 format 함수를 사용하면 됩니다.
문자열 format 함수를 이용해 변경해 보겠습니다.

숫자 바로 대입

Python
>>> "I eat {0} strawberry.".format(3)
'I eat 3 strawberry.'

문자열에서 {0}에 해당하는 부분이 format(3) 에서 지정한 3 으로 바뀐걸 확인할 수 있습니다.

문자열 바로 대입

Python
>>> "I eat {0} strawberry.".format("three")
'I eat three strawberry.'

문자열에서 {0}에 해당하는 부분이 format(“three”) 에서 지정한 ‘three’ 로 바뀐걸 확인할 수 있습니다.

숫자형 자료형을 가진 변수로 대입

Python
>>> number = 3
>>> "I eat {0} strawberry.".format(number)
'I eat 3 strawberry.'

number 라는 변수 에 숫자 3 을 입력하고 format 함수에서 number 변수를 호출했습니다.
문자열 {0} 에 해당하는 부분이 number 변수에 입력된 숫자 3 으로 바뀐걸 확인할 수 있습니다.

2 개 이상의 값 대입

Python
>>> number = 5<br>>>> day = "four"
>>> "I eat {0} strawberry. I had a stomach ache for {1} days.".format(number, day)
'I eat 5 strawberry. I had a stomach ache for four days.'

2 개 이상의 값을 입력했을 경우 {0}, {1} 의 인덱스 항목이 순서대로 바뀐걸 확인 할 수 있습니다.
숫자형과 문자형 상관없이 변경이 됩니다.

이름으로 넣기

Python
>>> "I eat {number} strawberry. I had a stomach ache for {day} days.".format(number=5, day="three")
'I eat 5 strawberry. I had a stomach ache for three days.'

변수를 사용하지 않고 변수처럼 이름({number} 와 {day})을 넣은후 format 함수에서 이름에 값을 지정해주면 해당 값이 출력되는걸 확인할 수 있습니다.
주의할 점은 name=value 입력값이 존재해야 한다는 겁니다.

인덱스와 이름 혼용

Python
>>> "I eat {0} strawberry. I had a stomach ache for {day} days.".format(5, day="three")
'I eat 5 strawberry. I had a stomach ache for three days.'

인덱스와 name=value 혼용으로도 사용이 가능합니다.

왼쪽 정렬

Python
>>> "{0:<10}".format("hello")
'hello '

:<10 표현식을 사용하면 format 에서 치환해주는 문자열을 왼쪽으로 정렬하고 전체 길이는 10자리로 맞춥니다.

Python
>>> "{1:<10}".format("hello")
"{1:<10}".format("hello") Traceback (most recent call last):
 File "", line 1, in
IndexError: Replacement index 1 out of range for positional args tuple

0:<10 을 1:<10 로 다른 숫자로 바꾸면 index 오류가 납니다

오른쪽 정렬

Python
>>> "{0:>10}".format("hello")
'     hello'

왼쪽 정렬의 반대로 오른쪽 정렬은 부등호의 기호만 바꿔주면 됩니다 ‘<‘ 에서 ‘>’ 로

가운데 정렬

Python
>>> "{0:^10}".format("hello")
'  hello   '

‘^’ 부호를 사용하면 가운데 정렬이 가능합니다. 치환하는 문자열을 제외한 공백의 갯수가 홀수라 앞에 2개, 뒤에 3개의 공백을 가져가네요

공백 채우기

Python
>>> "{0:=^15}".format("hello")
'=====hello====='
>>> "{0:*^15}".format("hello")
'*****hello*****'
>>> "{0:*<15}".format("hello")
'hello**********'

위 처럼 정렬을 하면서 공백 대신 원하는 문자값으로도 정렬을 할수가 있습니다.
주의할 점은 정렬 문자인 <, >, ^ 바로 앞에 원하는 문자값을 넣어야 합니다.

소수점 표현하기

Python
>>> x = 3.41425627
>>> "{0:0.5f}".format(x)
'3.41426'

앞에 예제에서 사용했던 “%0.5f” % 3.41425627 에서 0.5f 는 그대로 사용합니다.

Python
>>> "{0:10.5f}".format(x)
'   3.41426'

자릿수를 10자리로 맞춰보는것도 역시 가능합니다.

{ 또는 } 문자 표현

Python
>>> "{{ OR }}".format()
'{ OR }'

이전에 ‘%’를 표현하기 위해서 ‘%%’를 사용했을때와 마찬가지로 {{ }} 처럼 2개를 연속으로 해서 사용하면 됩니다.