딕셔너리는 해시 테이블 또는 키, 밸류라고 부른다. 

데이터는 중괄호 안에 선언되며 키와 밸류는 콜론으로 구분된다.

 

>>> dic_1 = {"key_1": 'value_1', 'key_2':"value_2"}
>>> dic_1["key_1"]
'value_1'
>>> dic_1['key_1']
'value_1'
>>> dic_1["key_2"]
'value_2'

키는 큰 따옴표 또는 작은따옴표를 사용해 선언할 수 있다.

키값의 경우 보통 문자열, 숫자, 튜플 등이 사용되고 밸류에는 어떠한 데이터 타입도 사용할 수 있다. 

 

딕셔너리의 특징은 맵 형식이기 때문에 순서가 보장되지 않는다. 따라서 인덱스를 통한 요소의 접근이나 첫 번째, 마지막 등의 순서가 필요한 정보에 대해서는 접근이 불가능하며 키값을 사용해서 접근해 사용한다.

 

>>> dic_1[0]
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    dic_1[0]
KeyError: 0

 

중복된 이름의 키를 사용하게 될 경우 에러는 발생하지 않지만 앞에 선언된 키, 밸류가 뒤에 값으로 덮어씌워진다.

 

>>> dic_2 = {'key_1':'val_1','key_1':'val_2'}
>>> dic_2['key_1']
'val_2'
>>> len(dic_2)
1

딕셔너리의 요소 개수를 반환하는 함수인 len()을 사용하면 앞에 선언된 요소가 존재하지 않는걸 알 수 있다.

 

 

728x90
반응형

튜플은 리스트처럼 배열로 요소를 저장할 수 있다.

요소를 선언할 때는 값을 콤마로 구분해서 저장이 가능하며 이때 소괄호를 사용해서 값을 감싸서 튜플로 표시하는 게 일반적이다.

>>> tuple_1 = 1, 2, 3
>>> tuple_2 = 4,
>>> tuple_3 = (5, 6, 7)
>>> tuple_1
(1, 2, 3)
>>> tuple_2
(4,)
>>> tuple_3
(5, 6, 7)

 

이렇게 튜플에 값을 할당하는것을 패킹이라고 한다.

 

이 튜플은 한 번에 여러 개의 변수에 값을 할당하는 게 가능한데 이것을 언패킹이라고 한다.

 

>>> tuple_1 = 4, 5, 6
>>> x, y, z = tuple_1
>>> x, y, z
(4, 5, 6)

 

불변성

튜플이 리스트와 다른 점은 선언된 이후에 값의 수정이 불가능하다.

>>> tuple_1 = 1, 2, 3
>>> tuple_1[0] = 4
Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
    tuple_1[0] = 4
TypeError: 'tuple' object does not support item assignment
>>> tuple_1 = 4, 5, 6
>>> tuple_1[0]
4
>>>

튜플의 요소에 인덱스로 접근하여 값을 변경하면 에러가 발생하지만 새로 값을 할당하는 것은 문제가 되지 않는다.

 

 

이러한 튜플의 특징을 활용해서 런타임에 값이 변하면 안 되는 정보를 저장하거나 또는 하나 이상의 정보가 조합을 이룰 때 의미를 가지는 데이터를 저장할 때 사용된다.

 

>>> tuple_1 = 4, 5, 6
>>> x, y, z = tuple_1
>>> x, y, z
(4, 5, 6)
>>> vector3 = (10, 2, -4)
>>> x, y, z = vector3
>>> x
10
>>> y
2
>>> z
-4
>>> x, y, z
(10, 2, -4)

 

 

여래 값을 전달할 수 있기 때문에 함수에서 여러 개의 값을 반환하거나 또는 매개변수로 전달이 필요할 때 등 다양하게 활용이 가능하다.

 

728x90
반응형

리스트

순서를 가지는 객체의 모음이다.

list_1 = []	# 빈 리스트 	
list_2 = [0, 1] # 정수타입
list_3 = ['a', 'b', 'c'] # 문자타입
list_4 = [0, 1, 'a', 'b'] # 정수와 문자타입
list_5 = [0, ['a', 'b']] # 리스트는 리스트를 요소로 가질 수 있다.

 

0개 이상의 요소를 콤마로 구분하며 전체 요소는 대괄호로 감싼다.

 

값을 참조할 때는 대부분의 프로그래밍 언어에서 사용되는 배열과 마찬가지로 인덱스로 접근할 수 있다.

 

역시 첫 번째 인덱스는 0으로 시작한다.

 

>>> list_1 = []
>>> list[0]
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    list[0]
TypeError: 'type' object is not subscriptable
# 비어있기 때문에 값을 참조할 수 없다.

>>> list_2[1]
1

>>> list_3 = ['a','b']
>>> list_3[0]
'a'

>>> list_5[1][1]
'b'

 

리스트 내부에 리스트 요소는 다차원 배열의 접근과 유사하다.

 

함수

리스트는 다양한 함수를 사용해서 다룰 수 있다.

 

 

append

리스트 맨 끝에 요소를 추가한다.

>>> list_functions = []
>>> list_functions.append('a')
>>> list_functions.append('b')
>>> list_functions
['a', 'b']

 

insert

지정한 위치에 요소를 추가할 수 있다.

>>> list_functions.insert(0, 'aa')
>>> list_functions
['aa', 'a', 'b']
# 지정한 인덱스에 요소가 추가되고 그 뒤로 기존 요소들이 한칸씩 밀린.

 

pop

리스트의 마지막 요소를 반환 후 삭제한다.

>>> list_functions.pop()
'b'
>>> list_functions
['aa', 'a']

# 요소를 반환 후 해당 리스트에는 제거됨

 

remove

지정한 값과 동일한 요소를 삭제한다.

>>> list_functions = ['a', 'a', 'b']
>>> list_functions.remove('a')
>>> list_functions
['a', 'b']
# 동일한 요소가 있을 경우 먼저 나오는 요소가 제거된다.

 

index

요소의 인덱스를 반환한다.

>>> list_functions.index('a')
0
>>> list_functions.append('a')
>>> list_functions.index('a')
0
# 동일한 요소가 있을 경우 먼저 나오는 요소의 인덱스를 반환

 

count

리스트 내에서 지정한 값과 동일한 요소의 개수를 반환한다.

>>> list_functions.count('a')
2

 

sort

요소들을 정렬한다. 

>>> list_char = ['d', 'a', 'e', 'c', 'b']
>>> list_int = [3, 2, 5, 4, 1]
>>> list_char.sort()
>>> list_int.sort()
>>> list_char
['a', 'b', 'c', 'd', 'e']
>>> list_int
[1, 2, 3, 4, 5]

오름차순으로 정렬되는 것으로 보이지만 정확하게는 기본값이 오름차순이고 이는 함수의 매개변수를 통해 설정가능하다.

>>> list_char_inc = ['d', 'a', 'e', 'c', 'b']
>>> list_char_dec = ['d', 'a', 'e', 'c', 'b']
>>> list_char_inc.sort(reverse=False) # defualt가 False이기 때문에 매개변수가 없으면 오름차순
>>> list_char_dec.sort(reverse=True)
>>> list_char_inc
['a', 'b', 'c', 'd', 'e']
>>> list_char_dec
['e', 'd', 'c', 'b', 'a']

 

reverse

요소들을 역순으로 정렬한다.

>>> list_char = ['d', 'a', 'e', 'c', 'b']
>>> list_char.reverse()
>>> list_char
['b', 'c', 'e', 'a', 'd']

 

clear

리스트의 요소를 모두 제거한다.

>>> list_clear = [1, 2, 3, 4, 5, 6]
>>> list_clear
[1, 2, 3, 4, 5, 6]
>>> list_clear.clear()
>>> list_clear
[]

 

728x90
반응형

함수는 여러 개의 처리를 기능별로 모아 놓은 것이다. 

사용할 때는 함수가 어떤 기능을 하는지만 알아도 되며 내부에서 처리되는 과정들은 알 필요가 없다.

 

이때 함수에 전달하는 데이터를 인수, 함수로부터 돌아오는 값을 반환값이라고 한다.

 

필요에 따라 직접 함수를 구현해서 사용할 수 있지만 파이썬에는 미리 준비된 함수도 많이 제공된다.

 

예를 들어서 두 개의 값을 비교해서 더 크거나 또는 작은 값을 구하는 처리가 필요한 경우가 빈번하게 사용되는 상황일 때, 매번 값을 비교하는 과정을 작성하는 것은 비효율적이다. 이럴 때 함수를 만들어서 처리하면 코드가 간결해진다. 

만약 필요한 함수가 파이썬에서 제공되는 것이라면 직접 구현하는 과정도 생략이 될 수 있다.

 

예시에서 처리하는 기능의 경우 파이썬에서 max(), min() 함수가 있다.

max(a, b)  : a와 b 중 큰 값을 반환

min(a, b) : a와 b 중 작은 값을 반환 

 

함수는 기본적으로 함수명() 형태로 선언되며 실행할 때 괄호를 붙여 실행한다. 어떠한 값을 입력해야 한다면 괄호 안에 변수나 값을 넣는다.

 

 

728x90
반응형

변수명

파이썬에서 변수명으로 사용이 가능한 문자는 다음과 같다.

대소 영문자, 숫자, 언더스코어이다. 여기서 숫자는 맨 앞에 올 수 없다.

 

이외에 예약어로 지정되어 있는 키워드들도 변수명으로 사용이 불가능하다.

 

대입 간이 기법

변수의 값이 자주 갱신되는 프로그래밍에서 값을 증가시키고 감소시키는 처리에서는 간이 기법을 사용한다.

수학에서는 적용되지 않는 a = a + 1과 같은 서식을 사용할 수 있다. 

동작은 우변을 먼저 계산하고 결과를 좌변의 변수에 대입한다.

 

연산을 하고 다시 자신에게 대입하는 처리보다 더 간단한 기술방법이 있다.

 

 

+= 자기 자신에게 우변값을 더하고, 그 결과를 자기 자신에 대입한다.
-= 자기 자신에서 우변값을 빼고, 그 결과를 자기 자신에게 대입한다.
*= 자기 자신에게 우변값을 곱하고, 그 결과를 자기 자신에게 대입한다.
/= 자기 자신을 우변값으로 나누고, 그 결과를 자기 자신에게 대입한다.

 

728x90
반응형

사칙연산

수학에서 사용되는 사칙연산을 그대로 사용할 수 있다. 

  수학 기호 파이썬 기호
덧셈 + +
뺄셈 - -
곱셈 x *
나눗셈 ÷ /

 

수학에서 사용하는 연산 규칙이 그대로 적용된다.

 

기타 연산

사칙연산 이외에도 일반적인 컴퓨터 사용하는 계산 기호들을 사용할 수 있다.

 

나머지를 구한다. %
몫을 정수로 구한다. //
지수를 구한다. **

 

728x90
반응형

IDLE

Intergrated Development Environment, 통합 개발 환경

파이썬 1.5.2B1 이후에 같이 설치되는 통합 개발 환경이다. 파이썬 명령어를 쉽게 사용할 수 있도록 제공되는 GUI 툴이다.

 

기본적인 연산 동작을 IDLE로 테스트해 본다.

IDLE은 시작에서 IDLE을 검색해서 찾아서 명령어창을 실행시킬 수 있다.

 

IDLE에는 여러 기능들이 제공된다.

 

자동완성

명령어를 빠르게 입력하거나 제공되는 함수를 찾을 수 있다.

 

구문강조

 

등의 편의성을 제공한다.

728x90
반응형

파이썬은 읽고 쓰기 쉽고 프로그래머의 작업 효율을 높이도록 디자인된 프로그래밍 언어이다.

윈도우, 맥 os, 리눅스는 물론 라즈베리 파이 등 다양한 운영체제를 지원한다. 이러한 장점들이 수많은 사용자를 이끌었고 거기에 따라서 자료도 찾기 쉬워 접근성이 더 높아지면서 그에 따라 더욱더 성장할 가능성이 있는 언어라고 볼 수 있다.

 

라이브러리

파이썬의 가장 큰 특징은 풍부한 라이브러리이다. 

문법이 간단해서 코드를 작성하는 데는 어려움이 없지만 무언가를 만들기 위해서는 목적에 맞는 라이브러리를 사용할 필요가 있다. 

 

파일을 읽고 쓰고, 네트워크에 접근하는 등 표준으로 준비돼 있는 것뿐만 아니라 서드파티가 공개하는 것도 많다.

 

대표적으로 유명한 라이브러리들이 있다.

NumPy                수치 계산 라이브러리
SciPy                   과학 기술 계산 라이브러리
PIL                       영상처리 라이브러리
Tkinter                  GUI 라이브러리
Beautiful Soup      HTML 정보 수집(스크래핑) 라이브러리
PyGame               게임 작성용 라이브러리

 

PyGame

python 3.8 버전을 기준으로 작업한다. 

게임을 개발하는데 필요한 라이브러리를 설치한다.

Anaconda

아나콘다는 파이썬에서 자주 쓰이는 패키지를 일괄적으로 설치할 수 있도록 한다.

Free Download | Anaconda

 

경로에 한글이 포함되어 있으면 에러가 발생할 수 있기 때문에 아나콘다를 설치하는 경로에는 한글이 포함되지 않도록 해주는 것이 좋다.

 

이때 환경변수를 Anaconda 폴더 내의 python.exe 가 실행되도록 경로를 맞춰야 한다.

 

게임에서 사용할 패키지를 설치한다.

 

pip install pygame

 

Error

다음과 같은 에러가 발생하면  pip이 설치되지 않아서 발생할 수 있기 때문에 직접 설치한다.

'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

pip은 보통 파이썬을 설치된다. 만약 이때 설치되지 못했다면 직접 명령어를 통해서 설치한다.

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

 

명령어를 입력하는 방법 외에도 python 인스톨러를 다시 실행시켜서 pip 설치에 대한 체크를 하고 파이썬 설치를 진행해도 된다.

 

pip 설치 후 다시 pygame 명령어 실행 시 제대로 설치가 된다.

 

완료된 패키지 파일을 실행시켜 설치한다.

python
import pygame

 

설치가 완료되면 다음 경로에 샘플이 생성된 것을 확인할 수 있다.

'[Anaconda 설치 경로]\Lib\site-packages\pygame\examples'

 

세팅 끝

 

728x90
반응형

프로그래밍에 대한 공부를 어느 정도 진행했을 무렵 다양한 언어들 중 평가가 좋은 언어를 따로 체크해 두고 학습해 보기로 하였다. 그렇게 미루고 미루다 언젠가 서점에서 책 하나가 눈에 들어왔다.

 

게임으로 배우는 파이썬

 

마침 체크리스트에는 파이썬도 있었다.

 

프로그래밍 언어는 특히 새로운 것을 학습할 때는 무언가를 만들면서 하는 게 쉽고 빠르게 습득이 된다고 생각한다.

 

게임으로 파이썬을 배울 수 있다는게 흥미가 생겨 목차만 대강 훑어보고 바로 구매하였다.

 

이 책을 시작으로 파이썬에 대해서 기본이라도 얻어갈 수 있게 된다면 의미가 있을 거라고 생각한다.

 

 책의 저자인 다나카 겐이치로는 파이썬을 배우기 위해서 입문서도 읽고 세미나도 다녔지만 익숙해지지 않았는데 자바스크립트로 만든 게임을 파이썬에 이식했더니 금방 익숙해졌다고 한다. 그래서 게임을 만들면서 파이썬을 배울 수 있도록 이 책을 만들었다.

 

또한 저자는 파이썬이 적용될 수 있는 분야가 다양하고 가능성이 무한하다고 하는데 역자 또한 동일한 맥락으로 도입글을 작성했다. 파이썬은 간결하고 쉬우며 방대한 기능을 하는 라이브러리가 매력적이라고 한다.

 

커뮤니티나 포탈에서도 파이썬에 대한 호평을 많이 봐왔는데 시작하는 글에서 다시 보게 되니 과연 파이썬이 얼마나 쉽고 간다 하며 활용성이 좋은 것일까 기대가 된다.

728x90
반응형

+ Recent posts