미운코딩새끼

Junhg0211 (토론 | 기여)님의 2017년 9월 13일 (수) 07:38 판 (오늘의 실습? 오늘? 오늘이 언제죠?)

1 김왼손과 집단지성들

  • 김왼손과 집단지성들은 잉끼유튜버 김왼손과 그 열혈 구독자들이 함께하는 코딩계의 아이돌 그룹입니다.
  • 정규 1집 미운코딩새끼는 남녀노소 상관없이 누구나 기여할 수 있습니다. 여러분도 지금 참여해보세요.
  • 앨범 제작 방식은 아래와 같습니다.
    • 김왼손은 강의한다.
    • 집단지성들은 본다.
    • 모두 함께 정리한다.
  • 생방송 중 정리 TIP "치고빠지기"
    • step1 . 메모장에 열심히 정리한다.
    • step2 . 정리한것 Ctrl+ a, Ctrl+ c 한다
    • step3 . 원하는 곳 [편집] 누른다.
    • step4 . '편집'창에서 원하는 부분에 Ctrl + V
    • step5 . 하단 [변경 사항 저장] 누른다.
  • 김왼손과 집단지성들 멤버 모집 영상


  • 아래는 현재까지 미운코딩새끼에 기여해 주신 분들입니다. 감사합니다.
    • 김왼손 : 김왼손과 집단지성들에서 김왼손을 맡고있음
    • 켈리(Kelly)(rnrmf3apdlf@gmail.com) : List, Tuple 등 요약
    • MANGO 망고 (mingyu041209@naver.com) : 디자인 다듬기, 귀도 반 로섬 제작
    • 이프리트 (adbdcd123@naver.com)
    • 요거트 (changeunp04@gmail.com) : 아무것도 안한것 같은 나
    • 묘인봉
    • pro memoria
    • H2SO4
    • 이에스 (hubolab10@gmail.com) : '파이썬이란', '이 책을 읽는 방법' 제작
    • JW호박 pumkin (pjwbrain@naver.com) : 조금의 요약 + 홍보
    • Meta27-익명의 거북 (leeyoungmin2788@gmail.com) : 약간의 수정, 조건문, IDLE 커스텀, While문 , 문자열 등에 기여
    • 김레이 (leykim0907@naver.com)
    • 토미유튜브 Tommy Youtube (tjdwn1416@gmail.com) : 그룹의 막내와 무한루프 내용 추가
    • JY HAN (jyhan35@gmail.com)
    • 김씨가족 (wearekimsfamily@gmail.com) : 수정 및 추가, 소소한 부분 정리
    • 겜맨 (yun040803@naver.com)
    • 신준혁 (mrchunchu@naver.com)
    • 불탄고등어 (loveleftst@gmail.com) : 다시 센터 할게욤!
    • 스치 (junhg0211@gmail.com)
    • 류도영(ryudo1023@gmail.com)
    • 호옹(v1000401@gmail.com) : 치고빠짐
    • 문용석 (weedss9@naver.com) : '귀도 반 로섬은 누구인가?' 제목 제작, '미운코딩새끼' 요약 다듬기, '파이썬이란?' 일부분 수정.

2 파이썬이란?

1989년 12월 귀도 반 로섬은 크리스마스 이브를 의미 있게 보내기 위해 취미로 인터프리터 언어를 만들기로 결심하였다. 그는 ABC 라는 프로그래밍 언어를 주로 사용하였는데 ABC 프로그래밍 언어의 장점은 그대로 살리고 단점은 제거 함을 시작으로 1990년 파이썬이 만들어졌다. 파이썬은 우리나라를 비롯한 동아시아 지역에서는 아직 대중적으로 사용되지 않지만 서양에서는 교육을 비롯해 많은 곳에서 사용되고 있다. 파이썬은 구글이 애용하는 언어 중 하나로 컴퓨터에서 쉽게 사용될 수 있는 언어이다. 파이썬은 다른 언어들에 비해서 쉽고 배우기도 편해서 요즈음 핫한 언어로 떠오르고 있다. 하지만 파이썬은 다른 언어에 비해 실행 속도가 빠른 앱을 만들기 어렵고 복잡한 명령어는 수행하기 어려워 빠른 속도가 필요한 앱에는 사용되지 않고 있다. 그래도 파이썬을 먼저 배우면 다른 언어를 배우기 쉬운 만큼 지금 먼저 같이 배우기를 추천한다.(프로그래밍 경험이 없는 사람도 같이 즐길 수 있다! 스크래치를 먼저 배우고 오면 더 쉽게 배울 수 있지만 말이다.)

3 귀도 반 로섬은 누구인가?

귀도 반 로섬 (Guiido van Rossum)은 네덜란드 출신의 컴퓨터 프로그래머이며, 프로그래밍 언어인 파이썬을 개발했다. 로섬은 2005년부터 2012년까지 구글에서 일했으며, 2013년부터 구글에서 퇴사해 현재까지 드롭박스에서 일하고 있다. 귀도 반 로섬은 Stichting Mathematisch Centrum (CWI)에서 일하면서 1986년에 BSD Unix에 glob () 루틴을 작성하고 기고했다. 또한 로섬은 ABC 프로그래밍 언어의 개발에 참여했으며, 나중에 a,b,c언어는 파이썬을 제작할 때 쓰였다.

4 이 책을 읽는 방법

요즈음 시대는 단순히 암기하는 시대가 아님. 이러한 명령문이 있다는 것을 알고 다시 활용하거나 구글에 검색할 수 있게 되면 이 강의는 많은 도움이 될 것임. 그래서 모든 내용을 외우려 하지 마시고 편안한 마음으로 봐주시면 좋겠음. 왜 구글으로 검색해야 하나요?) 구글은 네이버보다 코딩 관련 자료가 훨씬 많다. 구글에는 다양한 문제 예시와 강의들이 있어 검색하기 편함.

5 미운코딩새끼

  • 미운코딩새끼 : 4주간 파이썬 기초 문법 강의
  • 앞으로의 강의 : 파이썬 프로그래밍을 위한 재료 / 반복문 / 조건문 / 컨테이너(기본 재료를 모으는 것) / 함수(미리 묶어놓은 것, 이름을 붙여 놓은 기능)
  • 강의 대상 : 코딩을 처음 접하는 사람, 코딩을 미워하고 혐오하는 사람, 코딩을 포기한 사람

6 프로그램과 프로그래밍

6.1 프로그램과 프로그래밍

6.1.1 코딩이란?

  • 코딩 = 프로그래밍 : 엄밀하게는 다르지만 같게 쓰이는 추세
  • Coding = Programming
  • 프로그래밍 : 프로그램을 만드는 작업

6.1.2 프로그램이란?

  • 프로그램 : 어떤 문제를 해결하기 위해서 명령을 모아놓은 것 //일상의 문제를 컴퓨터를 이용해서 해결하는 것
  • 프로그래밍 언어 : 컴퓨터가 알아듣는 언어. 다양함.
  • 일상 속 프로그램 : 방송 프로그램, 운동 프로그램, 연주회 프로그램 등등
  • 고대 그리스어에서 어원. 미리 정해놓은 것
  • 일상 속 프로그램처럼 미리 정해놓은 것을 순서대로 위에서 아래로 실행함

6.1.3 프로그램의 기본 구조

  • 순차 : 위에서 아래로 한 줄씩 명령을 수행
  • 선택 : 분기. 선택의 순간, 예와 아니오 중 선택
  • 반복 : 같은 명령을 되풀이하는 것
  • 모든 프로그램은 이 세 가지 기본 구조가 쌓여서 이루어짐

6.2 왜 파이썬일까요?

6.2.1 쉽다

  • 코딩은 기본적으로 쉽지 않다.
  • 하지만 파이썬은 다른 언어에 비해서는 비교적 쉽다.
  • Java
public static void main(String[] args) {
    String msg = "Life is Short!";
    System.out.println(msg);
}
  • Python
msg = 'Life is Short!'
print(msg.split())
  • 입문 언어로 많이 사용(전에 블록코딩을 배우고 오면 더 좋음)
  • 범용 프로그래밍 언어 : 게임, 보안 등등에서 사용이 가능
  • 우리가 사용하는 영어와 유사한 문법

6.2.2 많다

6.2.3 빠르다

  • 실행속도가 빠르다는 것이 아니라 빠르게 개발이 가능하다는 말
  • 배터리 포함 : 다양한 라이브러리가 많아서 바로 갖다 쓸 수 있다는 의미
    • 있는 바퀴를 만들지 마라.
  • 배우는 속도가 빠르다

6.3 파이썬 설치하기: IDLE

  • https://www.python.org/ → Downloads → 3.X 클릭
  • 더블클릭 후 Install Now 누르기 전에 ?Add Python? 3.6 to PATH 체크하고 Next~!
  • 3.6.2 (가장 최신) 버전을 이용하는 것을 추천함. (본 강의는 3.6.0 버전 기준)
  • 추후 타 프로그램 사용시 버전이 연동이 안될 수 있음
  • IDLE : 통합 개발 환경
    • 인터랙티브 셸 : 컴퓨터와 핑퐁하듯이 주고받을 수 있는 명령창
    • 자신이 한번 명령어를 던지면 컴퓨터가 한번 대답을 던져주는 형식

7 입력과 출력

7.1 출력하기: print()

  • 출력!
  • 괄호 안의 어떤 값을 출력해주는 함수
  • 콤마 뒤에 띄어쓰기는 넣어주는 편이 일반적임
  • print 안의 내용이 출력됨. 파이썬의 가장 기본 언어임
  • 프로그래밍 언어는 약속
  • 개떡 = 개떡, 찰떡 = 찰떡. 융통성이 없음
  • 문자열 출력 시 "" 대괄호를 사용한다.
  • 변수를 이름으로 출력 가능하다.

7.2 입력하기: input()

  • 입력!
  • 내가 컴퓨터에게 이야기해주는 것. 사용자에게 입력받는 것.
  • ()안에다가 ‘’로 묶어서 문자 입력 가능
  • age = input(‘당신의 나이는?’) 처럼 input 받은 값을 어딘가에 저장할 수 있다.
  • 변수에 사용할 수 있는 경우가 많음

8 변수

8.1 변수와 변수이름

  • age 변수를 봤음
  • 변수에는 값을 저장(할당)하는데 변할 수 있음
  • my_int = 1
    • =은 할당한다는 의미. 1을 my_int에 할당한다는 의미.
    • 1에 my_int라는 이름을 붙여줌
  • http://www.pythontutor.com/
  • 메모리 번호를 사용했으나 복잡하므로 이름을 붙여줌. 이게 변수!
  • my_int에 2라는 자연수를 저장하고 my_float에 2.1이라는 실수를 저장할 경우 두 변수를 더하면 2 + 2.1이 계산된다.
  • 변수 이름은 타인과 함께 쓰기에 편한 이름으로 짓기. 약속 있음
  • 자신만 이해할 수 있는 언어보다 모두가 이해할 수 있게 네임을 짓는 것을 권장함.
  • 글자, 밑줄 문자 가능
    • abdfdfdsfd___sdfsdfsjdklfj = 1
  • 대소문자 구분이 가능
    • python = 1
    • PYTHON = 2
  • 유니코드 방식을 사용하기 때문에 한글도 지원한다.
    • 파이썬 = 1
    • 김왼손 = 20
  • 그럼 뭐가 안 되나?
    • 숫자로 시작하는 이름 안됨
    • 띄어쓰기 안됨(_로 띄어쓰기 대신)
  • 일반적으로 변수의 이름은 값에 관련된 영어이다. 첫 글자는 소문자, 그 다음의 단어들은 띄어쓰기나 언더바 대신 대문자로 구분한다.

9 프로그램의 기본재료

9.1 숫자형, 문자열, 불린

  • 숫자형
    • 정수형 integer
      • 1, 2, 3
      • 'int'로 불림
    • 실수형 float
      • 1.2, 3.23
      • 'float'이라고 불림
  • type() 함수
    • 변수의 데이터 타입을 확인해줌.
    • 파이썬에서는 거의 모든 것이 객체
  • 문자열 string
    • ‘ ‘ 또는 “ “로 구분
      • 짝은 맞춰주세요.
    • 글자
  • 불린 boolean
    • 참과 거짓, True와 False
  • 하이라이트 기능
    • 예약된 단어(예약어)에 색칠해주는 기능

9.2 리스트, 튜플, 딕셔너리

  • 리스트 list
    • 컨테이너
    • 숫자형, 문자열 등을 한번에 모아서 씀
    • my_list = [ ]
  • 튜플 tuple
    • 컨테이너
    • 리스트와 비슷하지만, 값을 바꿀 수 없다.
  • 딕셔너리 dictionary
    • 컨테이너
    • 키와 값의 쌍으로 저장.
    • 저장 가능
  • 자료형 변환
    • float()
      • 실수가 아닌 걸 실수로
    • str()
      • 숫자를 문자열로
    • list()
      • 강제로 리스트형으로

9.3 자료형 변환하기

9.4 주석

  • 컴퓨터는 알아듣지 못하는 우리끼리의 대화
    • 즉, 컴파일되지 않는다.
  • # 을 이용해서 주석 사용!
  • 주석은 코드 해석에 큰 도움이 되므로 사용하는 것이 좋다. 다만, 너무 많으면 오히려 복잡해지기만 한다.
print(2 + 3)  # 계산결과를 출력

10 문자열

10.1 문자열

  • 큰따옴표나 작은따옴표로 나열
  • 값이나 순서 변경이 불가
  • 문자열 안에 큰 따옴표나 작은 따옴표를 넣고 싶을 때는, 넣고 싶은 따옴표가 아닌 따옴표를 사용하여 문자열을 씌우고, 문자열에 넣고 싶은 따옴표를 넣는다
* ex) 작은 따옴표를 넣고 싶을때: print("Let's go!"), 큰 따옴표를 넣고 싶을때: print('I said, "~~"')
>>> my_str = "김씨가족"
>>> print(my_str)
>>> type(my_str) 
>>> my_str = 'JW호박 Pumpkin'
  • """ """ 모두 표현 가능
  • 세 개씩 """는 의미가 따로 있음 : 여러 줄을 한 문자열에 넣을 수 있음.
>>> my_str = """제스퍼
토미
메타
"""

10.2 문자열 포맷팅

  • %s : 문자열 대입에 사용
>>> my_str = 'My name is %s' % 'Young Choi'
>>> my_str
'My name is Young Choi'
  • %d : 정수형 숫자 대입: (정수란 -1, -2, 1, 2처럼 부호 뒤의 절댓값이 자연수입니다.
>>> '%d %d' % (1, 2)
'1 2'
  • %f : 실수형 숫자 대입: (실수란 -1.1처럼 부호 뒤의 절댓값이 자연수가 아닌 경우입니다.)
>>> '%f' % 3.14
'3.14'
  • '{ }'.format() : 파이썬스러운 연산자. 문자열을 자유롭게 표현하는 방법, 순서 지정 가능
>>> 'My name is %s' % '조희진'
'My name is 조희진'
>>> 'My name is{}'.format('조희진')
'My name is 조희진'
>>> '{} x {} ={}'.format(2, 3, 2*3)
'2 x 3 = 6'
>>> '{1} x {0} ={2}'.format(2, 3, 2*3)  # 괄호 안의 숫자는 순서를 지정
'3 x 2 = 6'

11 문자열

11.1 인덱싱

  • 주소, 위치, 색인
  • 위치에 따른 주소값
  • Python → 인덱스로는 0 = P, 1 = y, t = 2, h = 3, o = 4, n = 5
  • 실제 숫자와는 다르게 0부터 시작. 공백 포함
>>> my_name = '김왼손의 왼손코딩'
>>> my_name[3]
'의'
>>> my_name[8]
'딩'
  • 음수를 주소로 사용할 수 있음. 가장 마지막을 -1로 설정, 거꾸로 세어감
>>> my_name = '김왼손의 왼손코딩'
>>> my_name[-1]
'딩'
  • 리스트 자료형에서도 똑같음. 인덱스 기억!

11.2 슬라이싱

  • 자르다. 나누다
  • [시작:끝]
  • Python [1:4] → yth 를 의미 1부터 4전까지
  • Python [2:5] → tho 2부터 5전까지
my_name = '김왼손의 왼손코딩'
>>> my_name[5:7]
'왼손'
  • 앞이나 뒤의 값 생략 가능
my_name = '김왼손의 왼손코딩'
>>> my_name[:2]
'김왼'
>>> my_name[7:]
'코딩'
  • 기존 문자열은 그대로 존재, 복사해서 사용

11.3 메서드

  • 함수
  • 어떤 기능을 수행하기 위해 모아놓고 이름을 붙여 쉽게 불러 쓰게 함
  • string.split()
  • string만 사용할 수 있는 함수
  • 문자열이 공백을 기준으로 잘리는 split() 향후 설명
my_name.split()
['김왼손의', '왼손코딩']

11.4 독스트링

  • 문자열을 사용할 때 큰따옴표, 작은따옴표 세 개씩 사용하는 걸 주석으로 사용할 수 있음.
  • 기본 주석
>>> # 주석입니다.
  • 독스트링
>>> '''이것도 주석입니다'''
>>> """이것도 주석입니다"""
  • 함수 설명용으로 주로 사용하는 주석

11.5 이스케이프 코드

  • print 함수 end
  • 출력의 끝을 지정하는 방법
>>> print('', end='')

>>> print('집단지성', end='/')
집단지성/
>>> print('집단지성', end='미운코딩새끼')
집단지성미운코딩새끼
  • Escape code
  • 특별한 괄호 없이 사용
  • 특정 기능을 수행하는 문자의 조합
  • \n : 개행, 줄바꿈
>>> print('미운코딩새끼의 집단지성들')
미운코딩새끼의 집단지성들
>>> print('미운코딩새끼의/n집단지성들')
미운코딩새끼의
집단지성들
  • \t : tab 칸 (공백 4칸) 띄는 것.
  • \가 없는 키보드는 원화(\)
>>> print('미운', end='\t'); print('코딩')
미운    코딩
  • ; (세미콜론) 한 줄이 끝났다. 권장사항은 아님
  • C의경우 세미콜론(;)은 필수이나, 파이썬은 아님 ← 대신 파이썬은 콜론(:)을 자주 사용함

12 리스트

  • List : 몇만개의 자료를 한꺼번에 저장
  • immutable : 값 변경 불가, mutable : 값 변경 가능
  • [val1, val2…] ←리스트
  • 리스트에는 값을 처음부터 넣을 수 있고, 나중에 넣을 수도 있다.

12.1 추가하기

  • 리스트는 여러 개의 값을 한 개에 저장할 수 있다.
  • 수많은 숫자를 한 번에 저장. 인덱스 사용.
  • immutable(불변) vs mutable(가변)
  • immutable : 문자열, 튜플
  • mutable : 리스트, 딕셔너리
  • [val1, val2]
>>> my_list = []  # my_list라는 빈 그릇을 생성
[]
>>> my_list = [1, 2, 3]  # my_list에 처음부터 1,2,3 값을 저장
>>> std = ['이에스', '이에스2', '이에스3']
>>> std.append('토미')  # append 리스트에 추가하는 메서드
>>> std.append('찹쌀떡')

>>> humans.append('test') # 에러!!!

  • 리스트는 그릇이라 생각할 수 있다. 그릇을 만들지도 않고 append로 더할 수는 없음. append는 반드시 먼저 그릇(리스트)이 있어야 함
  • 리스트 중간에 끼워넣기: http://mwultong.blogspot.kr/2006/12/python-list-array-item-insert-example.html
  • insert 메서드, pop 메서드
  • append는 리스트에 값을 추가할 때 사용
  • append는 번호를 리스트 내의 번호를 붙여서 사용

12.2 인덱싱, 슬라이싱

  • del : delete
>>> animals =['코알라', '하이에나', '바다소', '땅다람쥐', '바다코끼리', '스컹크', '아나콘다']
>>> animals = [4]
'바다코끼리'
>>> del animals[4]  # 4번째 인덱스 삭제 
['코알라', '하이에나', '바다소', '땅다람쥐', '스컹크', '아나콘다']
>>> animals.append('바다코끼리')
>>> animals
['코알라', '하이에나', '바다소', '땅다람쥐', '스컹크', '아나콘다', '바다코끼리']
>>> animals[1:3]
['하이에나', '바다소']
animals[1:3]  #[1]부터 [3]전까지
[0]
[1]
[2]
[3]
[4]
[5]
[6]
'코알라'
'하이에나'
'바다소'
'땅다람쥐'
'스컹크'
'아나콘다'
'바다코끼리'

12.3 문자열 메서드

>>> animals.sort()
>>> animals
['땅다람쥐', '바다소', '바다코끼리', '스컹크', '아나콘다', '코알라', '하이에나']
  • list.count()
>>> animals.append('바다소')
>>> animals.count('바다소') ## 리스트에 값이 몇 개인가?
2
  • 길이(개수)를 알려줌. 내장함수(파이썬에서 이미 만들어둔 함수)
>>> del animals[1]
>>> len(animals)
7
>>> animals
['땅다람쥐', '바다코끼리', '스컹크', '아나콘다', '코알라', '하이에나', '바다소']
  • list.sort #sort 메서드 정렬 하는 메서드
animals.sort()
  • list.count
animals.count('바다소')  # animals 리스트에 ‘바다소’가 몇마리 있나? 2
animals.count('코알라')  # animals 리스트에 ‘코알라’가 몇마리 있나? 1
animals.count('하이에나')  # animals 리스트에 하이에나가 몇마리 있나? 1
len(animals)  # animals 리스트에 동물들이 몇마리 있는가 ? 6


13 튜플

  • Tuple (리스트와 거의 유사) : 값 변경 불가.
  • 리스트 대괄호[]
  • 튜플은 괄호 안써도 됨
my_tuple = 1, 2, 3
my_tuple = (1, 2, 3)
  • Packing : 자료를 쌓아놓는 것
  • Unpacking : 자료를 풀어놓는 것
num1, num2, num3 = my_tuple
num1 = 1
num2 = 2
  • 둘의 자료 순서가 바뀌려면..
num1, num2 = num2, num1

13.1 패킹, 언패킹

  • 여러 값을 모아서 저장
  • 리스트와 차이는 값을 변경할 수 없음! immutable
  • (val1, val2) 또는 val1, val2 괄호 없어도 됨
>>> my_tuple = () ## 빈튜플 작성 가능함
>>> my_tuple = 1, 2, 3
  • Packing vs Unpacking : 여러 개 값을 하나로 묶기 vs 묶인 값을 풀기 // Packing 뭔가를 쌓는 것. Unpacking 뭔가를 푸는 것.
>>> my_tuples = 1, 2, 3 ## Packing
>>> num1, num2, num3 = my_tuple ## Unpacking 각각에 튜플 값이 들어감

14 for

  • 모든 변수를 거칠때까지 이 명령문 안에 있는 것을 반복
for 변수 in 컨테이너:
    실행할 명령 1
    실행할 명령 2
    ...
  • 변수가 다 떨어질 때 까지 반복
  • 4칸의 들여쓰기, tab, 8칸 들여쓰기
  • 들여쓰기는 모두 하나로 통일
  • 4칸 띄어쓰기 권장!
>>> for animal in animals:
    print(animal)
'땅다람쥐'
'바다코끼리'
'스컹크'
'아나콘다'
'코알라'
'하이에나'
'바다소'
>>> for num in [1, 2, 3]:
    print(num)
1
2
3

14.1 기본구조

  • 반복을 나타내는 중요한! 문법 ( 파이썬에서 가장 중요한 요소중에 하나입니다)
  • 반복 처리 = 컴퓨터 주특기. 빠르고 정확하게 수행 가능
  • 파이썬에서는 두 가지가 있음 for, while
  • 파이썬의 들여쓰기 : 탭과 스페이스바는 섞어쓸 수 없음. 4칸!
  • 콜론과 들여쓰기(띄어쓰기 4칸)가 중요 ← 코드블록
for 변수 in 컨테이너 : 
    실행할 명령1  # 코드블럭
    실행할 명령2
  • 컨테이너의 첫 번째 값이 변수에 들어간 다음 명령1과 2 실행
  • 컨테이너의 두 번째 값이 변수에 들어간 다음 명령 1과 2 실행…
  • 컨테이너의 마지막 값까지 반복
>>> for animal in animals: ## animals의 값을 불러다 모두 출력
    print(animal)

'땅다람쥐'
'바다코끼리'
'스컹크'
'아나콘다'
'코알라'
'하이에나'
'바다소'
>>> for num in [1, 2, 3]:
            print(num)

1
2
3

14.2 range()

  • range(n)은 0부터 n 전의 숫자까지를 나타낸다.
  • 또, range(n, i)는 n부터 i 전의 숫자까지를 나타낸다
  • 예) range(3) → [0, 1, 2]
  • range(1,4) → [1, 2, 3]
  • 내장 함수
>>> range(3)
>>> range(0,3)
  • for n in [0, 1, 2]:과 for n in range(0,3): 같음 0부터 수를 시작해서 세 번째 숫자 전(2)까지
>>> for n in range(0,3):
            print(n)
0
1
2

14.3 for x 2

  • 반복문 안의 반복
>>> for j in range(2, 10):
    for i in range(1, 10):
        print({}x{}={}.format(j, i, j*i))
  • 구구단 2단
>>> for i in range(2, 10):
    print('{}x{}={}'.format(2,i,2*1))          #작은따옴표를 넣을 것!
  • 구구단
>>> for j in range(2, 10):
    for i in range(1, 10):
        print('{}x{}={}'.format(j,i,j*i))

14.4 컴프리헨션

    • 매우매우 많이 사용됨
    • 여러줄의 코드를 한줄로 나타내는 것
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> odd_numbers = []

>>> for number in numbers:
    if number % 2 == 1: #2로 나눴을때 1이 남으면
        odd_numbers.append(number)

print(odd_numbers)
  • 위에는 numbers에서 odd_numbers로 홀수만 옮기는 것
  • 위의 코드와 아래의 코드는 같다.
>>> [number for number in numbers if number % 2 == 1]
>>> for i in range (0, 11):
     print (i)
  • C언어로 작성해 본다면
for (i = 1, i < 10, i++)
     printf(“파이썬 초보강의 들어보기!)
  • JS로 작성해 본다면
for (var i=1; i < 10; i++)
	console.log(JS욥)
이를 통해 우리는 파이썬이 다른 언어들보다 훨씬 쉽다는 것을    있습니다.

print animals [0:5]
  • 어렵지만 많이 쓰임. 우선 알아는 두고 갑시다.
  • 갑자기 엄청 고급으로 넘어갑니다! 컴프레션은 어려운데 많이 쓰여요. 그래서 알아두면 좋긴해요. 지금 말고 나중에라도 이런 게 있다는 것만 알아두시면 좋아요. 그냥 바로 볼게요. 하시고 뭘 할거냐면요. 넘버스라는 리스트가 있어요. 1 2 3 4 5 6 7 8 9 10 이라는 리스트가 있어요. odd_numbers라는 리스트가 있어요. numbers에서 홀수 값만 뽑아와서 1, 3, 5, 7, 9만 넣을 거에요.
>>> numbers=range(1,11)
for number in numbers:
    if number % 2 == 1:
        odd_numbers.append(number)

>>> [number for number in numbers if number %2 == 1]
  • 만약에 넘버 퍼센트라는 것은 얘를 2로 나눴을때 나머지가 1이냐 라는 것이죠. 2를 2로 나누면 0이 남고 이렇게 영 일 영일 이러면서 홀수와 짝수를 구분할수 있고 홀수인것만 오드 넘버스에 넣어라 이 의미죠. 이거는 고급기술이지만요 말씀드리는것은 정말 많이 사용되기 때문이죠. 네 한번 실행시켜 보세요. 일삼오칠구만 나오는걸 보실수 있어요.
  • 홀수 출력해보세요
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> odd_numbers = []
>>> for number in numbers:
    if number % 2 == 1:  # 2로 나눌 때 나머지가 1인가 묻는 문장, 즉 홀수 판단문
        odd_numbers.append(number)
>>> print(odd_numbers)
  • 이걸 바꿔봄
>>> [number for number in numbers if number % 2 ==1]
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> odd_numbers = []

>>> for number in numbers:
    if number % 2 == 1: # 2로 나눌 때 나머지가 1인가 묻는 문장, 즉 홀수 판단문
        odd_numbers.append(number)

>>> print(odd_numbers)

>>> test = [number for number in numbers if number % 2 ==1]
>>> print(test)

15 연산자

15.1 할당

  • 예전에는, 변수의 이름으로 숫자를 사용했다.
  • 그런데 숫자로 사용 하다보니, 변수가 많아져게 되었을 때 헷갈리게 되었다.
  • 그래서 나온 것이 바로 이름!
  • =은 할당 연산자이다.
  • =을 기준으로 왼쪽에 있는 변수에 오른쪽에 있는 값을 할당해 주는 것이 할당 연산자이다.
  • +=은 복합할당 연산자이다.
  • += 기준으로 왼쪽에 있는 변수에 오른쪽에 있는 값을 더해주는 것이다.
>>> my_int = 1
>>> my_float = 2.0
>>> my_list = []

>>> count = 0
>>> count = 1
>>> count
1
>>> count += 1
>>> count
2
  • 이 코드를 실행시키면, 'my_int'라는 이름의 변수 안에는 1이, 'my_float'라는 이름의 변수 안에는 2.0이, 'my_list'라는 이름의 변수 안에는 []가 들어가 있게 되는 것이다.

15.2 산술

  • 숫자 자료형끼리 연산을 할 수 있게 해주는 연산자들이다.
  • '+', '-', '*', '/' 모양으로 쓴다.
    • '*'? 곱하기?
    • 우리는 이 표시를 Asterisk라고도 하고, '곱하기'를 나타낸다.
>>> 3 + 3
6
>>> 20 - 5
15
>>> 6 * 2
12
>>> 12 / 3
4.0
  • 이런식으로 더하기, 빼기, 곱하기, 나누기를 할 수 있다!
  • 그리고 이것과, 특수연산자라는 것이 있다!
    • '**', '//', '%'가 있다.
>>> 3 ** 2 # 3의 2제곱
9
>>> 4 ** 3 # 4의 3제곱
64
>>> 7 / 3
2.3333333333333335
>>> 7 // 3 # 7 / 3의 몫 (소수점 아래 부분을 없앤 정수 값!)
2
>>> 7 % 3 # 7 / 3의 나머지
1
  • % 연산자같은 경우에는 다른 목적으로 사용되는 경우도 있다.
>>> numbers = [1, 2, 3, 4, 5, 6, 7]
>>> for number in numbers:
...     print(number)
1
2
3
4
5
6
7
  • 이렇게 되는 것이 있는데, 이 값들이 홀수인지, 짝수인지 구별하고 싶다.


  • 우리가 생각하기에는, [1, 3, 5, 7]이 홀수이고, [2, 4, 6]이 짝수이다.
  • 그렇다면 우리는 나머지 계산 (%)을 이용해서 홀수와 짝수를 골라내는 프로그램을 만들어 볼 것이다!
    • 컴퓨터는 당연히 사람이 생각하는 이런 어려운걸 알 리 없다!
    • 그러니까, 어떤 수를 2로 나눠서, 나머지가 0이 나오면 짝수이다!
>>> if 1 % 2 == 1:
...     print("홀수")
홀수
>>> if 2 % 2 == 0:
...     print("짝수!")
짝수!
  • 우리는 이렇게 홀수, 짝수를 알아볼 수 있다.
  • if에 대해서는 아래에 서술되어 있음──
>>> numbers
[1, 2, 3, 4, 5, 6, 7]
>>> for number in numbers:
...     if number % 2 == 1:
...         print("홀수!")
...     else:
...         print("짝수")
홀수!
짝수
홀수!
짝수
홀수!
짝수
홀수!
>>> for number in numbers:
...     if number % 2 == 1:
...         print(number, "는 홀수!")
...     else:
...         print(number, "는 짝수!")
1  홀수!
2  짝수!
3  홀수!
4  짝수!
5  홀수!
6  짝수!
7  홀수!

15.3 문자열

  • 문자열도 연산자가 있다!
  • 문자열에서의 +는 앞문장과 뒷문장을 연결시킨다.
  • 문자열에서의 곱하기는 그 문자열을 곱한 수만큼 출력한다.
     - 문자열 에서의 더하기 -

>>> '김왼손' + 'X' + '엘리스'
'김왼손X엘리스'


    - 문자열 에서의 곱하기-

>>> '김왼손' * 20
    '김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손김왼손'

15.4 비교

  • 비교연산자는 말 그대로 비교를 하는 것이다.
    • '==' 은 '왼쪽에 있는 피연산자와 오른쪽에 있는 피연산자가 같냐?'를 묻는 것이다.
    • '!=' 는 '왼쪽에 있는 피연산자와 오른쪽에 있는 피연산자가 다르냐?'를 묻는 것이다.
    • 잠깐! 여기서 나오는 값은, 불린 값(True / False)이다
      • 만약, 1 == 1을 사용 했다면, 결과는 True가 되는 것이다.
    • '>' 는 '왼쪽에 있는 숫자가 더 크냐?'를 묻는 것이다.
    • '<'는 '오른쪽에 있는 숫자가 더 크냐?'를 묻는 것이다.
    • '>='는 '왼쪽에 있는 숫자가 더 크거나 같냐?'를 묻는 것이다.
    • '<='는 '오른쪽에 있는 숫자가 더 크거나 같냐?'를 묻는 것이다.
>>> 1 < 2
True
>>> 2 < 1
False
>>> 1 != 1
False
>>> 1 == 1
True
>>> 4 <= 6
True
>>> 5 <= 5
True
  • 이런 식으로 비교를 해서 True인지, False인지를 알 수 있다.

15.5 논리

  • Python의 논리 연산자: 3개가 있다.
    • 'and', 'or', 'not'
    • and '그리고' , or '또는' , not '아닌' 이라는 뜻이다.
>>> True
True
>>> False
False

>>> True and True
True
>>> True and False
False
>>> False and False
False

>>> True or True
True
>>> True or False
True
>>> False or False
False

>>> not False
True
>>> not True
False
    • 그렇다고,, 이건 아니다
>>> not True
 eurT


>>> not True


<br>
* and는 하나라도 False이면 False를 출력하는 것이다
* or는 하나라도 True라면 True를 출력하는 것이다
* not은 그냥 False랑 True를 바꿔버린다.

<source lang="python">
>>> height = 120
>>> age = 8

>>> height > 140 and age > 10
False
  • height > 140은 False, age > 10은 False이므로 False and False 는 False이다.
>>> h = 190
>>> age = 9

>>> h > 140 and age > 10
False
  • 키는 되는데 나이가 안 된다는 것이다!
>>> h = 150
>>> age = 32

>>> h > 140 and age > 10
True
  • 키도 140보다 크고, 나이도 10살보다 크기 때문에 놀이기구를 탈 수 있다!!

15.6 멤버쉽

  • 마지막 연산자: 멤버쉽
  • 리스트같은 것에 값이 있는지, 없는지를 확인한다.
    • 파이썬은 영어 기반이여서 '있다'와 '있지 않다'를 뜻하는 'in'과 'not in'이 있다.
>>> 김왼손과_집단지성들 = ['조희진', '불탄고등어', '요거트', '류도영', '스치', '망고', 'Meta', '호박']
>>> 김왼손과_집단지성들
['조희진', '불탄고등어', '요거트', '류도영', '스치', '망고', 'Meta', '호박']
>>> '스치' in 김왼손과_집단지성들
True
>>> '이에스' in 김왼손과_집단지성들
False
>>> '이에스' not in 김왼손과_집단지성들
True
>>> 김왼손과_집단지성들.append('이에스')
>>> '이에스' not in 김왼손과_집단지성들
False
>>> '이에스' in 김왼손과_집단지성들
True
  • 이렇게 그냥 영어로 연산자를 알아볼 수 있다!
  • 응? 여기 김왼손이 빠진?,,,

15.7 삼항연산자

  • if문을 이용해 변수의 값을 선택할 때, 보통 우리는 이렇게 한다
  • a, b 두 값중 더 큰 값을 넣을 때
>>> a, b = 1, 2
>>> if a > b:
... 	print(a, end="")
... else:
... 	print(b, end="")
2
# 더 큰 값을 출력하는 if-else문이다.
  • 하지만, 우리가 코딩을 하다 보면, 이렇게 긴 문장을 쓰면 근처에 있는 방대한 양의 if문과 겹쳐저, 잘 안 보일 수도 있고,
  • 어쨌든! 삼항연산자라는것은 if-else문을 한 줄로 줄인 것이다.
>>> a, b = 1, 2
>>> print(a if a > b else b)
2
  • 아니!? 무려 2가 출력되었다!
  • "값1 if 조건 else 값2" 는 '조건'이 True일 때는 값1을 출력하고, False일 때에는 값2를 출력한다.

16 조건문

16.1 if

  • 기본 구조
if 조건:
    실행  명령 1
	실행  명령 2
  • if문은 조건문의 참, 거짓 여부를 판단후:
    • 참일 경우 if 문구뒤의 조건문을 실행
    • 거짓일 경우 if 문구뒤의 조건문을 실행하지 않음
  • if문구를 반복해서 여러번 사용가능
  • if문구 안에 다른 if문구를 사용가능
  • if-elif 문구에서의 조건은 or, and를 사용하여 한개 이상을 추가 가능
>>> number = 1
>>> result_first = "number = 1 은 참이다"
>>> result_second = "number는 홀수이다"

>>> if number == 1:
...    print(result_first)
>>> if number % 2 == 0:
...    print(result_second)
# "number = 1 은 참이다" 만 출력되고 뒤의 if 문구는 거짓이기때문에 "number는 홀수이다" 는 출력을 하지않음

>>> if number == 1 and number % 2 != 0:
...     print(result_first)
...     print(result_second)

number == 1  참이고 number % 2 != 0  참이기 때문에 if문구안에 있는 모든것을  실행
"number = 1 은 참이다"
"number는 홀수이다"
예시 2
  • 파일로 만들어 실행 했을때
input_name = '김왼'

if input_name == '김왼손':
    print('똑똑')
    
if not input_name == '김왼손':
    print('바보')

출력: 바보

16.2 else

else:
    실행할 명령 1
    실행할 명령 2
  • if, elif 를 포함한 모든 문구가 거짓일때 if문을 실행하지않고 else 문으로 바로 건너가서 else 문구안에 있는 조건문을 실행
  • if, elif, else 문구는 같은 들여쓰기(indentation) 에 있어야 if -> elif -> else 문구로 넘어감
  • 가장 처음에는 if를 쓰고 가장 마지막에는 else를 쓰고, 그 전에는 elif를 쓴다
  • else 이후의 if, else, elif 스크립트는 인식 하지 못한다
>>> number = 1
>>> result_evenNum = "짝수입니다"
>>> result_oddNum = "홀수입니다"

>>> if number % 2 == 0:
...    print(result_evenNum)
... else:
...    print(reslut_oddNum)
홀수입니다
  • 1 % 2 == 1이기 때문에!

16.3 elif

elif:
    실행할 조건1
    실행할 조건2
            .
            .
            .
  • else, if 의 줄임말로써 if 조건문이 거짓일경우 다음 조건인 elif 문의 참,거짓을 판별후 실행문 실행여부로 넘어감
speed = 10

if speed > 100:
   print("과속")
elif speed < 30:
   print("저속")
else:
   print("적정속도")
저속
  • speed = 10 이기때문에 첫번째 조건문인 if문구에서의 참,거짓 판별후, elif 문구의 참, 거짓으로 넘어간다.
  • 여기서의 속도는 10이기 때문에 elif 문의 speed < 30 이 참이므로 elif 실행문을 실행하고 else문으로 넘어가지는 않는다

16.4 들여쓰기

  • 들여쓰기 indentation (인덴테이션)
  • 보통은 tab 키를 눌러서 줄의 구분을 함 tab키 == 스페이스4번 입력
  • 코딩을 깔끔하고 에러없이 하기위해서 필수적으로 줄맞춤을 해야함
  • if문구에서 줄이 맞지 않을경우 IndentationError 를 불러옴
  • 들여쓰기 혹은 줄맞춤이 제일 중요함.
num1 = 1
num2 = 2
num3 = 3

if num1 == 1:
    print("num1 은 1과 값이 같다")
    if num2 == 2:
        print("num2 은 2과 값이 같다")
        if num 3 ==4:
            print("3은 4와 값이 같은가?")
        else:
            print("num3 은 3과 값이 같다")
else:
    print("???")

# ↓ 결과
"num1 은 1과 값이 같다"
"num2 은 2과 값이 같다"
"num3 은 3과 값이 같다"

16.5

  • if 문은 한줄로 이루어진 구문으로 쓰기 어렵다.
  • if문은 여러줄로 쓰는게 편하다
  • IDLE는 한 줄로 쓰는것에 맞춰져있다. 다시 말하지만 idle는 컴퓨터와 핑퐁을 치는 원리임. 나만 2번 칠 수 없음. 하지만 에디터 모드는 나만 여러번 쳐도 됨
  • if문은 Editor Mode에서 쓰는 것이 편하다.

17 while

  • 반복해서 문장을 수행해야 할 경우 사용한다
  • True(사실)이면 스크립트 계속 반복
  • False(거짓)이면 스크립트 끝남

17.1 기본구조

while 조건:
	실행  문장 1
	실행  문장 2
	...
  • while도 if와 마찬가지로 들여쓰기를 사용해서 사용하는 경우가 많다 보니, Editor Mode에서 코딩을 하는 것이 쉽다.
예제 1
Whlie count < 3:
    print('횟수:', count)
    count += 1
예제 2
count = 0

while count < 10:
    count += 1
    if count < 4:
        continue
    print('횟수', count)
    if count == 8:
        break

17.2 continue, break

  • for, while 문구 안에서의 루프도중 결과값을 무시하고 그대로 실행할지, 강제로 종료후 루프를 빠져올지 결정하는 코드
countdown = 10
print("나랑 결투를하자")
print("10초후 총을 발사할것이다")
print(str(countdown) + "!")

while countdown > -10 :
    countdown = countdown - 1
    if countdown == 2:
         print(str(countdown) + "!")
         continue
    elif countdown == 1:
         print(str(countdown) + "!")
         print("Bang!")
         break

countdown 은 while 루프가 한바퀴 실행될때마다 1씩 줄어들게된다 하지만 continue 문이 2와 같을때까지 중간과정을 생략하고 진행하게 된다 if문구가 끝나고 elif 문구의 countdown 이 1에 도달했을때 실행문을 출력하고 while 문구는 countdown이 -10보다 클때까지 실행을 해야되지만 countdown 이 1일때 break 문구로 루프를 종료하였다

"나랑 결투를하자"
"10초후 총을 발사할것이다"
"10!"
"2!"
"1!"     
"Bang!"

17.3 무한 루프

  • 파이썬에서 무한 루프는 while문으로 구현할 수 있다. 다음은 무한 루프의 기본적인 형태이다.
  • while문의 조건문이 True이므로 항상 참이 된다. 따라서 while문 안에 있는 문장들은 무한하게 수행되는 것이다.
while True: 
    수행할 문장1 
    수행할 문장2
  • 무한 루프의 예
while True: 
    print("지우셔도 됩니다.") 

지우셔도 됩니다
지우셔도 됩니다
지우셔도 됩니다
지우셔도 됩니다
지우셔도 됩니다
지우셔도 됩니다
지우셔도 됩니다
지우셔도 됩니다
지우셔도 됩니다
......

18 딕셔너리

18.1 접근하기

"""TBD"""

18.2 제거하기

"""TBD"""

18.3 딕셔너리 메서드

"""TBD"""

19 함수

19.1 종류

sum say many mul nick

"""TBD"""

19.2 함수를 사용하는 이유

    • 코드의 불필요한 반복을 막는다.
    • 짧게 작성할 수 있다.
    • 프로그램의 순서 또는 흐름을 쉽게 볼 수 있다.
"""TBD"""

20 모듈

20.1 랜덤

"""TBD"""

21 예외 처리

"""try:
    ...
except [발생 오류[as 오류 메시지 변수]]:
    ..."""

22 객체

    • 클래스라고도 한다. 객체를 생성하기만 하면 되기 때문에 함수를 사용하는 경우와 달리 매우 간단해진다.
"""class object():
        ...
"""

23 코드 스타일

23.1 PEP8

"""TBD"""

24 구글링

"""TBD"""

25 플러스 알파

  • IDLE 커스텀
    • IDLE theme customizing 검색

26 플러스 베타

  • 파이썬에 대한 궁금한 점은 여기에 적어주세요.

파이썬문법이 저만 어려운가요?

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}