유기농냠냠파이썬

호박 (토론 | 기여)님의 2017년 12월 9일 (토) 22:32 판 (→‎연산자)

1 유기농냠냠파이썬 - 김왼손과 집단지성들 정규 2집

대학교 새내기 시절 코딩이 너무 어려웠습니다. 잘해보려 아등바등 노력해 봤지만 매번 실패만 하다가 결국 미워하게 돼버렸습니다. 지금 돌아보면 그렇게 미워할 정도는 아니었는데 말이죠. 지금도 같은 고민을 하는 분들이 많을 거라고 생각합니다. 그 때 그 시절 이런 강의가 있었으면 어땠을까 하는 마음으로 유기농냠냠파이썬을 준비했습니다.

유기농냠냠파이썬은 코딩이 너무 어려워 포기한 분, 또는 코딩을 처음 접하는 분을 위한 강의입니다. 파이썬이라는 프로그래밍 언어의 기초 문법을 쉽게 배울 수 있습니다. 코딩을 왜 배워야 하는지, 왜 필요한지에 대해서 답을 주지는 않지만 코딩이란 이런 거구나, 파이썬이란 이런 거구나 하는 정도의 감을 잡을 수 있습니다.

1.1 유기농냠냠파이썬

유기농냠냠파이썬은 잉끼유튜버 김왼손과 그 열혈 구독자들이 함께하는 파이썬의 첫걸음을 때는 프로그램입니다. "김왼손과 집단지성들" 정규 2집 유기농냠냠파이썬에 참여해 주신 분들은 아래에 기록을 꼭 남겨주세요. 닉네임과 이메일을 적어주시면 됩니다. 순서는 상관이 없으니 차례대로 적어주시면 좋겠습니다. 참여해 주신 모든 여러분들께 진심으로 감사드립니다.

  • 이에스 [hubolab10@gmail.com] - 서브 보컬 ( 실시간 스트리밍 채팅 살리기 + 예제 제작 )
  • JK Jung [jaekook.jeong@gmail.com]
  • tv모루 ( 보조 편집자)
  • Park6000
  • JW호박 pumkin [pjwbrain@naver.com] - 메인 댄서(실시간 스트리밍 채팅 살리기 + 유기농냠냠파이썬 보조 편집)
  • 토미유튜브 Tommy Youtube [tjdwn1416@gmail.com] - 메인 보컬
  • MANGO 망고 [mingyu041209@naver.com] - 작사가
  • 웃는남자 [namja1325@naver.com]
  • Young
  • Sean [wansunlee@gmail.com]

1.2 유기농냠냠파이썬 키우기

  • 김왼손은 강의합니다.
  • 열혈 구독자들은 문서를 잘 키웁니다.
  • 모두 함께 정리합니다.

-주의- 강의 중에는 내용이 겹칠 수 있으니 메모장에 미리 적어났다가 복사 붙여넣기를 이용해 빠르게 내용을 삽입하세요.

2 들어가기 전에

2.1 이 강의의 특징

  • 이 강의는 코딩을 한번도 배우지 않은 사람을 대상으로 합니다. 그래서 쉽고 빨리 배울 수 있습니다. 현재 만들어진 다른 강의를 보면 내용이 어려운 강의가 많습니다. 따라서 불필요한 내용도 많이 실려져 있습니다. 그래서 이 강의는 초심자에게 꼭 필요한 내용을 담고 있어서 이 강의를 끝내면 다른 프로그램을 만들거나 더 어려운 강의를 들을 수 있게 됩니다.

2.2 이 강의 두배로 즐기기

  • 이 강의에는 여러분이 직접 참여하실 수 있도록 다양한 예시와 실습자료가 준비되어져 있습니다. 따라서 여러분이 직접 파이썬 IDLE를 켜고 강의를 보며 따라하시면 더 오래 기억하실 수 있습니다. 그리고 여러분이 이 책을 읽으시다가 궁금한 점이 생기면 구글에 검색하시면 많은 정보를 얻으실 수 있습니다. ( 네이버에는 파이썬 관련 내용이 많지 않습니다. )

2.3 프로그래밍이란?

  • 프로그램은 프로그램을 만드는 과정을 말합니다. 프로그램은 우리가 컴퓨터에게 일을 시키는 것입니다. 대표적인 것으로는 계산기 프로그램, 다이어트 프로그램, 주식예측 프로그램 등이 있습니다. 이러한 프로그램을 사용하면 더 빠른 시간에 여러 일을 할 수 있습니다.

2.4 프로그래밍 언어

  • 우리가 영국 사람에게 한국어를 사용하면 알아듣지를 못합니다. 컴퓨터도 마찬가지입니다. 그래서 컴퓨터가 알아들을 수 있는 언어를 사용하여야 하는데 이를 프로그램 언어라고 합니다.

2.5 프로그램의 구조

  • 프로그램은 크게 순차, 반복, 선택이라는 기본 구조를 가지고 있다. 직접 말로 설명하지 않고 예를 들겠다.

2.6 순차

>>>오른쪽으로 가라 >>>오른쪽으로 가라 >>>오른쪽으로 가라

2.7 반복

>>>오른쪽으로 3번 가라

2.8 선택

  • >앞에 몬스터가 있는가?
    • >예 : 왼쪽으로 돌아라
    • >아니요 : 앞으로 가라

3 파이썬이란?

3.1 파이썬의 탄생

  • 파이썬은 귀도 반 로섬(Guido van Rossum)에 의해 만들어졌습니다. 그는 자신이 있던 프로젝트가 성과가 없다는 이유로 종료되자, 자신이 자신이 속했던 ABC프로젝트에서 만든 프로그래밍 언어인 ABC를 바탕으로 새로운 분산환경 시스템에 맞으면서 C와 셀에서 부족한 부분을 채워주는 새로운 언어를 개발하고자 1989년부터 파이썬 개발에 착수하고 1990년에 완성시켰습니다.

3.2 파이썬의 장점

  • 빠르다. (여기서 빠르다는 것은 실행속도가 빠르다는 것이 아니라 개발 속도가 빠르다는 것입니다.) 실제로 C언어와 파이썬을 비교해보면,

- C언어:

#include <stdio.h>

int main(void)
{
    printf("Hello World!");
    return 0;
}

- 파이썬:

print('Hello World!')

-이렇게 큰 차이를 보이는 것을 알 수 있습니다.

  • 쉽고 간결하다

- 파이썬은 다른 언어보다 더 쉽고 더 짧게 코드를 작성할 수 있습니다. 그래서 초심자들이 배우기에 적당합니다.

  • 검색 결과가 많다

-파이썬은 관련 서적이 많고 구글에 검색할 시 결과가 많이 나옵니다. 특히 영어로 치면 말입니다. 이러한 인터넷 자료는 여러분이 프로그램을 만들 때 도움이 됩니다.

4 파이썬의 이용

  • 파이썬은 다양한 곳에서 이용이 됩니다.

4.1 구글의 애용

  • 파이썬은 구글에서 애용하는 언어로 파이썬의 제작자인 귀도 반 로섬이 구글에 입사하면서부터 자주 사용되었습니다. 그래서 현재 구글의 3대 언어 중 하나입니다.

4.2 파이썬 활용

파이썬은 웹개발에서부터 게임개발 그리고 데이터 분석과 머신러닝까지 그 활용도가 무궁무진하여 여러 사람들에게 각광받고 있습니다.

4.2.1 웹개발

파이썬의 웹 프레임워크 중 하나인 '장고(Django)'를 활용해서 개발된 웹사이트로는 다음과 같은 것들이 있습니다.

4.2.2 게임

4.2.3 데이터 분석

파이썬의 데이터 분석 라이브러리를 통해 방대한 양의 데이터에 알맞은 방법으로 접근하고, 효과적인 방법으로 분석할 수 있게 되었습니다.

데이터 분석 라이브러리
NumPy http://www.numpy.org
Pandas https://pandas.pydata.org
IPython https://ipython.org
SciPy https://www.scipy.org
데이터 시각화 라이브러리
Matplotlib https://matplotlib.org
Seaborn https://seaborn.pydata.org
Bokeh https://bokeh.pydata.org
Plotly https://plot.ly

5 파이썬 설치

5.1 버전

  • 파이썬은 크게 3버전과 2버전으로 나눌 수 있습니다. 3버전은 최신 버전으로 2버전와 호환이 되지 않는 부분들이 다수 존재합니다.

5.2 어떤 버전을 쓸까?

  • 파이썬 3버전(3. X)을 추천합니다. 왜냐하면 더 쉽고 계속 업데이트가 되며 최신 서적도 주로 3버전을 다루고 있기 때문입니다.
  • 파이썬 2버전(2. X)은 더이상 추가 업데이트를 하지 않겠다고 공식 발표를 했습니다.

5.3 파이썬 다운로드

5.4 주의해야 할 점

  • add to path를 누르고 가는 것이 초심자들에게 좋습니다. 이는 나중에 다양한 기능에 유용하게 사용됩니다.

6 프로그램의 기본재료

6.1 숫자형

  • 숫자형은 파이썬에서 가장 기본이 되는 자료입니다. 따라서 나중에 유용하게 사용할 수 있습니다. 숫자형은 크게 정수형과 실수형으로 나눌 수 있는데 정수형은 x가 자연수일 때 x 홋은 -x입니다. 예를 들어 -8, 4, 19 등이 있습니다. 실수형은 쉽게 생각하면 x가 자연수가 아닐 때 x, 혹은 -x입니다. 예를 들어 0.5, 1.8, -9.54 등이 있습니다.
my_int=1
my_float= 1.1

6.2 사칙연산

  • 사칙연산은 더하기, 빼기, 곱하기, 그리고 나누기를 이야기합니다. 이는 각각 +, -, *, /입니다. 많은 분들께서 곱하기와 나누기를 X와 %를 쓰시는데 이는 다른 의미를 가지고 있습니다. 그 외에도 거듭제곱인 **와 나눗셈의 몫인 // 등 여러 기호가 있는데 이는 내용이 어려우니 간단히만 보고 넘어가겠습니다.
1 + 1
2 - 1
4 * 5
6 / 2

6.3 print문

  • print문은 말 그대로 출력하는 것입니다. 말로 설명하면 오히려 더 어려우니 예시를 보여드리겠습니다. (단, 쓰신 글의 좌우에는 ' 표시를 꼭 해주셔야 합니다.
print('유기농냠냠파이썬')
print('미운_코딩새끼')

6.4 변수

  • 변수는 계속 변화하는 값으로 함수와 연관성이 깊습니다. 게임에서의 점수가 변수의 예입니다. 쉽게 생각하면 한 상자에 어떠한 값을 저장한다고 생각하시면 됩니다. 변수에는 어떤 값을 더하거나 빼고 곱하거나 나눌 수도 있습니다.
  • '변수명'은 변수의 이름입니다. 변수명은 여러분의 자유로 지을 수 있는데 3가지의 규칙이 있습니다.
1. 변수명을 숫자로 시작하면 안됩니다.
2. 띄어쓰기 대신 언더바(_)를 사용합니다.(변수명에 띄어쓰기가 포함되면 에러가 납니다.)
3. 대문자와 소문자를 구별합니다.
※ 추가로, 변수의 의미를 알 수 있는 변수명을 이용해야 합니다. 그래야지 시간이 지나서도 다시 사용하기 쉽고 자신의 코드를 공유하기 쉽습니다.
my_int = 2
my_float = 4.1
my_int + my_float
6.1

7 문자열

7.1 기본구조

  • 문자열이란 '나 " 안에 있는 숫자나 문자를 이야기합니다. 예를 들어 3.14가 원래는 실수형이지만 ' 안에 들어오면 문자열이 되는 것입니다.
  • 작은따옴표(), 큰따옴표("")를 사용합니다.
  • 예제
my_str1 = 'a'
my_str2 = '3.14'
my_str3 = 'coding'
my_str4 = "coding"
  • 문자열들로 연산을 할 수도 있습니다. 이는 나중에 함수를 사용할 때 유용하게 사용합니다.
  • 예제
my_str1 = '1' + '2' + '3'   
my_str2 = 'cod' + 'ing'    
my_str3 = '=' * 10
  • 위 코드를 IDLE에 입력하면 123, coding, 그리고 ==========이 출력됩니다.

7.2 인덱스

  • 인덱스는 문자열에서의 주소입니다.
  • 각 문자마다 위치(인덱스)가 따로 있어 잘라낼 수 있습니다.
  • 파이썬에서 인덱스 할 때는 숫자가 0부터 시작하니 주의해야 합니다.
  • 예제
alphabet = 'abcde'
print(alphabet[0])
print(alphabet[3])
print(alphabet[4])
  • 위 코드를 IDLE에 입력하면 a, d, 그리고 e가 차례대로 출력되게 됩니다.
  • 음수로도 인덱스를 할 수 있습니다. 이는 나중에 이미 만든 작품을 수정할 때 유용하게 이용되니 잘 기억해두도록 합시다.

7.3 슬라이싱

  • 여러개의 문자를 잘라오는 것입니다. 이는 역시 코드를 수정할 때 유용하게 사용됩니다.
  • 콜론(:)으로 할 수 있습니다.
  • 슬라이싱에서는 공백도 포함됩니다.
my_str = 'Hello Python!'
print(my_str[0:1])
print(my_str[0:2])
print(my_str[3:7])
  • 위 코드를 IDLE에 입력하면 H, He, 그리고 lo(공백)p가 차례대로 출력됩니다.
  • 콜론(:) 앞에 값이나 뒤에 값을 생략할 수도 있습니다.
my_str = 'Python'
print(my_str[:3]) # 문자열의 처음부터 해당 숫자 전까지
print(my_str[2:]) # 해당 숫자부터 문자열의 끝까지
print(my_str[:]) # 문자열 전체
  • 주석을 참고하면, 위 코드는 각각 Pyt, thon, Python을 출력합니다.
  • 슬라이싱은 문자를 실제로 잘라 버리는 게 아니라, 자른 만큼 복사해 오는 것입니다. 즉, 슬라이싱을 해도 원본 문자열은 그대로 남아 있습니다.

7.4 메서드

Split
  • 이 코드를 입력하게 되면 사과, 바나나, 그리고 레몬이 각각 리스트의 다른 항목으로 저장이 되게 됩니다. 리스트의 정의는 추후에 설명하도록 하겠습니다. 그래서 정리해서 말하자면 split은 한 문자열 안을 나누는 것을 말합니다.
fruit_str = 'apple banana lemon'
fruits = fruit_str.split()
print(fruits[0])
print(fruits[1])

7.5 주석

  • 주석은 사람만 읽을 수 있고 컴퓨터는 읽을 수 없는 내용입니다. 메모라고 생각하면 편합니다. 이는 그래서 역시 이미 만들어놓은 코드를 수정하거나 알아보는데 편합니다.
  1. 주석은 #을 이용해 나타내며 어떠한 내용을 적어도 컴퓨터는 알아보지 못합니다.
print('안녕!') # 인사를 하는 코드
#print('안녕!')
  • 위 코드를 IDLE에 입력하면 # 인사를 한다. 부분은 보이지 않고 두 번째 코드는 아예 결과가 보이지 않게 됩니다.

8 리스트

  • 30명의 학생이 수학 시험을 보았다고 예를 들어봅시다. 지금까지 저희가 배운 내용으로는 my_student1, my_student2...으로 30개를 나타내어야 합니다. 하지만 이런 변수들 여러개를 제어하기 힘듭니다. 그래서 여러 값을 한번에 저장할 수 있는 것이 리스트입니다. 이 방법으로 변수를 정리하면 30명의 학생이 본 수학 점수를 한 줄로 정리할 수 있습니다.

8.1 기본구조

  • [요소 1, 요소 2 .....]가 리스트의 기본구조입니다.
>>> my_list1 = []
>>> my_list2 = [1,2,3]
>>> my_list3 = ['a','b']

8.2 값 추가

  • 빈 리스트에 값을 추가할 때에는 append()를 사용합니다.
my_list[]
my_list.append(123)
print(my_list)
[123]

8.3 리스트 값 대체

  • 리스트는 튜플과 다르게 값을 변경할 수 있습니다. 그래서 요소를 가져올 수도 있고 요소를 반대로 만들 수도 있다는 것을 알 수 있습니다. 이는 프로그램의 3대 내용인 순차, 반복, 선택 중 선택에서 자주 사용됩니다.

8.4 리스트 값 지우기

  • del()를 이용하면 append()와 반대로 값을 지울 수 있습니다. 그리고 지워진 값의 위치로 뒤의 있던 값의 위치가 변경합니다. 그래서 del문을 사용할 경우에는 많은 코드를 변경해야 하는 경우가 많습니다.
>>> my_list = [123, 'abc', True]
>>> del my_list[0]
>>> del my_list[1]

8.5 슬라이싱

  • [ : x]는 처음부터 x까지를, [x: ]는 x부터 끝까지를 이야기합니다. 이는 프로그램의 전체적인 틀을 잡을 때 유용하게 활용됩니다.
my_list = [a, b, c]
print(my_list[:1])
[a]
print(my_list[1:3])
[b, c]
print(my_list[2:])
[c]

8.6 메서드

sort
  • sort는 리스트와 같은 여러개의 값을 정렬해 줍니다.
my_list2 = [3, 2, 4, 1]
my_list.sort()
print(my_list)
[1, 2, 3, 4]
count
  • count는 그 리스트의 요소의 개수를 각각 구하는 것입니다. 이는 적은 양을 구할 때는 불편하겠지만 구글같이 큰 프로젝트를 할 때에는 훨씬 더 빠르게 작업을 진행할 수 있습니다.
my_list = [a, c, a, b]
print(my_list.count(a))
2
print(my_list.count(b))
1
print(my_list.count(c))
1

물리형 자료문()

in
my_list = [a, b, c, d]
print(a in my_list)
True
print(f not in my_list)
True
print(e in my_list)
False

9 튜플

  • 리스트와 거의 동일합니다.
  • 튜플은 값을 변경할 수 없습니다. (이를 전문용어로 이뮤터블이라고 합니다.)
  • 튜플에서는 리스트에서와 달리 대괄호가 아닌 소괄호를 사용하며 그저 쉼표만 써도 만들 수 있습니다.
  • 튜플의 장점
    • 변해서는 안되는 값을 저장할 때 활용
    • 리스트보다 빠름

9.1 기본구조

  • (요소1,요소2..)
>>> my_tuple1 = ()
>>> my_tuple2 = (1,)
>>> my_tuple3 = ('a','b', 'c')
>>> my_tuple4 = 3.14, 'Python', True

9.2 패킹, 언패킹

  • 패킹 : 여러개의 값을 묶는 것 (예 : 리스트, 튜플)
  • 언패킹 : 값을 푸는 것(아래 예시 참고)
my_tuple = 3.14, Python, False
i, s, b = (123, abc, True)

10 for

10.1 반복문

  • 반복되는 지루한 작업을 처리할 수 있는 구문입니다.
    • 조건을 기준으로 반복(while)
    • 횟수로 반복(for)
  • 반복문의 장점
    • 한눈으로 보기 쉽기 때문에 코드를 읽기 쉬워집니다.
    • For, in 즉, 키워드는 변수로 설정할 수 없습니다.
    • 순서열 다음으로는 꼭 콜론(:)을 써야한다는 것을 명심합니다.
    • In 뒤에는 문자열이나 리스트 등 여러가지 자료형들이 들어올 수 있습니다.
  • 예제
>>>my_list = [1, 2, 3]
>>>for count in my_ list:
        print('횟수, count)
>>> my_str = 'coding'
>>> for letter in my_str:
        print('횟수', letter)

10.2 기본구조

  • 예제
for 변수 in 순서열:
    실행할 명령1
    실행할 명령2
    ...

10.3 들여쓰기

  • 들여쓰기
    • 파이썬에서 for문이나 while문 등 콜론(:)으로 끝나는 문장 뒤에 나오는 코드를 코드블럭이라고 합니다.
    • 코드블럭에선 들여쓰기를 하는데, Tab, 공백 4칸 등등 들여쓰기를 하는 방법은 여러가지 입니다.
    • 처음 들여쓰기를 한 양식은 그대로 따라가셔야 합니다. 만약 처음에 Tab을 썼다면 계속 Tab을 써야합니다. 그렇지 않으면 오류가 날 수 있습니다.


  • 주의: 지금부터의 일부 예제는 Editer 모드를 이용한 것입니다.
  • Editer 모드란?
    • Editer 모드는 IDLE 창 왼쪽 위의 File 칸을 누르고, New File을 선택하면 나옵니다.
    • 그곳에 작성한 코드는 저장을 할 수 있으며, 한번에 실행이 됩니다.

10.4 range()

  • for문과 함께 많이 쓰이는 함수이며, 순서열들의 순서를 만들어주는 함수입니다.
  • 이런 것들을 내장함수 라고 하는데 내장함수들은 파이썬에 기본적으로 제공하는 함수입니다.
  • 예제
range(stop)

for count in range(3):
    print('횟수:', count)

10.5 for x 2

  • for문을 중첩하여 사용할 수도 있습니다. (즉, 반복이 두 번 되는 것이죠)
  • 예제
for j in range(2):
    for i in range(2):
        print('i:{}, j:{}'.format(i, j))
  • 실행결과
i:0, j:0
i:1, j:0
i:0, j:1
i:1, j:1
>>>

10.6 컴프리헨션

  • [주의] 심화과정이니 자세히 이해가 되지 않으셔도 됩니다. 따라서 이런 것이 있다는 것만 알고 가시면 됩니다.
  • 긴 코드를 한줄로 표현하는 과정입니다.
numbers = [1,2,3,4,5,6,7,8,9,10]
odd_numbers = []

for number in numbers:
    if number % 2 == 1: #홀수인가?
        odd_numbers.append(numbers)
  • 컴프리헨션 (위 코드와 동일한 결과)
numbers = [1,2,3,4,5,6,7,8,9,10]
odd_numbers = [number for number in numbers if number % 2==1]

11 연산자

11.1 논리형 자료형

  • 참, 또는 거짓 두 가지 값만 가지고 있으며, 영어로는 불린 연산자라고 합니다.
  • True, False 이며, 대문자로 시작을 해야 합니다.
  • 예제
>>> my_bool1 = True
>>> my_bool1 = False
>>> my_bool3 = 1 < 2
>>> print(my_bool3)
True

11.2 비교

  • 두 수, 혹은 자료형을 비교할 때 사용합니다.
  • ==, !=, >, < 등 수학적 기호를 이용한 다양한 비교 연산자가 있습니다.
>>> my_cmp1 = 1<2
>>> my_cmp2 = 1==2
>>> my-cmp3 = 2<=1
>>> my_cmp4 = 1 <= 2 < 3

11.3 논리

  • And와 or 두 가지를 이용한 연산자입니다.
  • And가 True가 되기 위해서는 and를 기준으로 양쪽에 입는 값이 모두 참 이여야만 합니다.
  • 반면, or은 False or False 일때만 False가 됩니다.
>>> my_con1 = True and True
>>> print(my_con1)
True
>>> my_con2 = True and False
>>>print(my_con2)
False
>>> my_con3 = True or False
>>>print(my_con3)
True
>>> my_con4 = not True
>>>print(my_con4)
False

11.4 멤버쉽

12 조건문

12.1 if

  • 조건이 참인지 거짓인지 판단해 그 조건에 따라 조건의 흐름을 바꿀 수 있는 구문입니다.
name = 'Lefty'
if name == 'Lefty'
     print("당신이  Lefty군요")

12.2 else, elif

name = 'Alice'
if name == 'Alice'
            print("당신이 Alice 군요")
elif name == 'Bob'
           print("당신이 Bob 이군요")
else:
          print("당신은 누구십니까?")

13 while

13.1 기본구조

13.2 continue, break

14 딕셔너리

14.1 기본구조

14.2 값 추가하기

14.3 값 제거하기

14.4 메서드

15 함수

15.1 기본구조

15.2 함수의 종류

15.3 여러 개 돌려받기

15.4 함수를 사용하는 이유

16 모듈

16.1 기본구조

16.2 random

import random
my_int = random.randint(0, 10)
print(my_int)

17 객체

18 코딩 스타일

18.1 PEP8

19 구글링 방법

20 강의 외 내용

21 기타 사이트

22 문서 정보

유기농냠냠파이썬

  • 지은이 : 김왼손과 집단지성들 시즌 2
  • 펴낸곳 : 왼손코딩 유튜브 (https://goo.gl/xHi84G)
  • 제작기간 : 2017년 11월 25일~
  • 훌륭한 강의를 해주신 김왼손님과 열심히 배운 집단지성님들, 열심히 해주셔서 감사합니다. -제작자 일동-

23 같이 보기