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

윈도우, 맥 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
반응형

Collections

. Net Framework에서 사용되던 라이브러리이다. Generic 기능이 도입되기 이전에 사용되었으며 Collections의 클래스들은 모든 요소를 object 타입으로 처리하여  요소를 다룰 때에 형변환을 필요로 한다.

 

대표적의로 ArrayList, Hashtable, sortedList, Stack, Queue 등이 있다.

 

Generic

Collections의 클래스들은 형변환이 필요하기 때문에 잘못된 타입을 사용할 경우 에러가 발생하게 된다. 

이 문제를 해결하기 위해서 안정성을 제공하는 새로운 클래스들이 Generic 네임스페이스로 추가되었다.

 

대표적으로 List, Dictionary, Queue <T>, Stack <T> 등이 있다.

 

 

Collections Generic
ArrayList List<T>
Hashtable Dictionary<TKey, TValue>
Queue Queue<T>
Stack Stack<T>

 

Compare

옛날부터 작성된 코드인 경우에는 Collections 라이브러리를 사용하기 위해서 해당 네임스페이스를 선언해 주는 경우가 많다. 거기다 새로 추가된 Generic도 사용하기 위해서 두 라이브러리를 모두 선언하는 경우가 많은데 공식 문서에 따르면 Collections에서 사용하는 클래스들은 Generic에 안정성이 추가된 대체할 수 있는 클래스들이 있기 때문에 되도록이면 Generic만 사용하기를 권장한다.

 

대표적으로 ArrayList와 List<T>를 비교해 본다. 

using System;
using System.Collections;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // ArrayList
        ArrayList arrayList = new ArrayList();

        // 요소 추가
        arrayList.Add("Hello");
        arrayList.Add(30);
        arrayList.Add(true);

        // 요소 접근
        string str = (string)arrayList[0];
        int num = (int)arrayList[1];
        bool flag = (bool)arrayList[2];

        Console.WriteLine(str);  // 출력: Hello
        Console.WriteLine(num);  // 출력: 30
        Console.WriteLine(flag); // 출력: True
        
        // List<T>
        List<object> list = new List<object>();

        // 요소 추가
        list.Add("Hello");
        list.Add(30);
        list.Add(true);

        // 요소 접근
        string str = list[0];
        int num = list[1];
        bool flag = list[2];

        Console.WriteLine(str);  // 출력: Hello
        Console.WriteLine(num);  // 출력: 30
        Console.WriteLine(flag); // 출력: True
    }
}

arrayList와 list 변수 모두 가변 배열로 요소를 추가하고 인덱스로 접근하여 값을 사용하고 있다.

하지만 사용법에서 차이가 발생한다.

 

ArrayList는 Add 메서드를 사용하여 요소를 추가하고 접근할 때에는 형변환을 수행해야 한다. 모든 요소를 object 타입으로 처리하므로 요소를 사용하기 전에 타입을 캐스팅해야 한다.

 

하지만 List 요소의 타입은 컴파일 시점에 검사 되기 때문에 추가한 요소에 접근할 때 형변환이 따로 필요하지 않다. 

즉 Generic을 사용하게 되면 타입의 안정성이 보장되고 컴파일러가 타입을 검사를 수행하기 때문에 타입으로 인해 발생하는 문제를 사전에 발견할 수 있으며 형변환 코드를 작성할 필요가 없기 때문에 코드가 간결해진다.

728x90
반응형

+ Recent posts