매뉴얼 활용

3D프린터 로봇제어를 위한 파이썬 (코딩언어)
작성자 : 김경현 등록일 : 2019-11-08 조회수 : 87

첨부파일

자료출처 : http://cafe.daum.net/diylab/VuS5/227

 

 

 

 

[3D프린터 로봇제어를 위한 파이썬 (코딩언어)]

 

파이썬은 배우기 쉽고 코딩하기 쉽다. 문법과 의미 구조가 간결하고, 언어의 표현이 쉬워 문제 해결을 위한 알고리즘이나 프로젝트 디자인에 더 많은 시간을 할애할 수 있게 해준다. 

 

 

파이썬 공부 사이트 

 

1. 파이썬 공식 홈페이지

2. 코드 아카데미

3. 위키 독스

4. 바이트 오브 파이썬

 

 

■ 파이썬 공부 사이트

 

1. 파이썬 다운로드

2. 파이썬 설치하기

 

 

■ 파이썬 맛보기

 

앞으로 파이썬을 공부하는데 있어 기초 지식이라고 할수 있는 내용을 먼저 알아본다. 입력과 출력, 그리고 간단한 개념 소개들로 구성되어 있으니 꼭 먼저 읽기를 추천한다.

 

Chapter 1. 파이썬 맛보기

 

Section 01. 파이썬 코드를 실행하는 첫번째 방법 - 파이썬 쉘 이용

Section 02. 파이썬 코드를 실행하는 두번째 방법 - 파이썬 쉘 + 메모장

Section 03. 값 출력하기와 주석 넣기

Section 04. 변수와 변수 출력

Section 05. 간단한 연산 맛보기

Section 06. 문자열 맛보기

Section 07. 썬 문장

Section 08. 함수 맛보기

Section 09. 사용자로부터 입력받기

Section 10. 모듈 맛보기

Section 11. 오류와 친해지기

Section 12. 복합 대입 연산자

Section 13. 연산자 우선 순위

 

 

Section 01. 파이썬 코드를 실행하는 첫번째 방법 - 파이썬 쉘 이용

 

파이썬 Shell로 실시간 코딩하기를 배운다. 파이썬이 무료로 제공하는 IDLE (통합개발환경) 을 이용한다. IDLE 를 이용하면 파이썬 인터프리터를 간편하게 실행할수 있기 때문에 가장 편리한 방법이다. 인터프리터 (Interpreter) 란 프로그래밍 언어로 작성된 소스 프로그램을 컴퓨터가 이해할수 있는 기계어로 번역해 주는 소프트웨어를 말한다. 파이썬으로 작성한 소스 프로그램을 만들면 기계어로 번역해 준다. 파이썬을 설치하면 인터프리터가 자동으로 설치되니까 걱정할 필요없이 파이썬 코드를 실행시킬수 있다.

 

1. IDLE 실행

 

 

 

 

2. 파이썬 쉘에서 코딩하기

 

 

 

 

Section 02. 파이썬 코드를 실행하는 두번째 방법 - 파이썬 쉘 + 메모장

 

파이썬을 *.py 파일로 저장하고 실행하는 방법을 배운다. 파이썬 코드를 *.py 파일로 저장한 다음 한꺼번에 실행하는 방법을 알아보기로 한다. 확장자는 피이썬 코드임을 알려주는 동시에 실행하면 파이썬 인터프리터가 실행된다는 뜻이다. 프로그래머들은 보통 메모장에 여러줄의 코드 작성후 파일로 저장하고 통째로 실행하는 방법을 사용한다. 

 

1. IDLE 실행

 

 

2. 메모장 열기

 

 

 

3. 코딩하기

 

 

4. 저장하기

 

 

 

5. 실행하기

 

 

6. 실행 결과 확인하기

 

 

 

 

Section 03. 값 출력하기와 주석 넣기

 

print() 함수는 화면에 값을 출력하는 명령이다. print() 의 활호안에 화면으로 출력하고 싶은값을 넣어주면 된다. 코드에 주석을 넣고 싶으면 # 을 사용한다.

 

 

 

Section 04. 변수와 변수 출력

 

변수는 데이터를 임시로 저장하는 공간이다. 

 

변수명 만드는 5가지 규칙

 

1. 대문자와 소문자를 구분한다. apple 과 Apple 은 다른 변수이다.

2. 영문 대문자, 영문 소문자, 숫자 그리고 밑줄 (_) 을 사용하여 만들수 있다.

3. 변수명 중간에 공백이 들어가면 안된다.

4. 숫자로 시작하는 변수명은 안된다.

5. 예약어는 변수로 사용할수 없다.

 

예약어 (Keyword)

 

and, as, assert, break, class, continue,

def, del, elif, else, except, False,

finally, for, from, global, if,

import, in, is, lambda, None, nonlocal,

not, or, pass, raise, return, True,

try, while, with, yield

 

파이썬에서 이미 다른 목적을 위해 사용하는 단어로서 변수명으로 사용할수 없는데 예약어 종류는 33개로 True, False, None 를 제외하면 모두 소문자로만 구성되어 있다. 변수는 값을 임시로 저장하는 공간을 말한다. 변수명 만들기 규칙 5개를 기억하자. 변수가 '=' 왼쪽에 있으면 값을 저장한다는 의미이고, '=' 오른쪽에 있으면 변수를 사용한다는 의미이다.

 

 

 

Section 05. 간단한 연산 맛보기

 

산술 연산과 산술 연산자. 각줄에 있는 띄어쓰기는 가독성을 위한것으로 프로그램 실행에는 관계없다. 곱셈 기호 (*) 와 나눗셈 기호 (/ 와 //) 는 수학기호와 다르다. 지수승을 구하는 연산자는 ** 이다. % 는 나머지 연산자로 연산에서 자주 사용된다.

 

파이썬 기본 연산자

 

x + y : 더하기 : x 와 y 를 더한다.

x - y : 빼기 : x 에서 y 를 뺀다.

x * y : 곱하기 : x 와 y 를 곱한다.

x / y : 나누기 : x 를 y 로 나눈다.

x // y : 나누기 : x 를 y 로 나눈다. 단, 결과를 정수로 표현한다.

x ** y : 지수승 : x 의 y 승을 구한다.

x % y : 나누기 : x 를 y 로 나눈 나머지를 구한다.

 

 

 

Section 06. 문자열 맛보기

 

문자열은 문자를 표현하기 위한 것으로 따옴표로 묶어 처리한다. 프로그래밍에서 문자열을 다루는 것은 매우 중요한 일이다. 작은 따옴표 또는 큰 따옴표로 묶여 있으면 문자열이다. 문자열을 저장한 변수는 문자열 변수이다.

 

 

 

Section 07. 썬 문장

 

파이썬은 문장 단위로 처리한다. 문장은 보통 파이썬 코드로 한줄을 구성할수 있는 모든것을 말한다. 여러 문장을 한줄에 나타내고 싶으면 세미콜론 (;) 을 사용한다. 한 문장을 여러 줄로 나누고 싶을땐 연결 연산자인 역슬래시 () 를 사용한다.

 

 

 

Section 08. 함수 맛보기

 

함수란 특정한 일을 처리해주는 역할을 한다. 함수는 특정한 일을 처리하는 코드들의 집합이다. 함수는 호출됨으로써 그 기능을 실행시킬수 있다. 함수를 고우할때는 함수의 기능과 함께 입력값과 반환값이 어떤 형태인지를 기억해야 한다. 함수의 실행 결과를 호출하는 곳에 돌려주는 것을 "반환한다" 또는 "리턴한다" 라고 표현합니다.

 

함수

 

print() : 입력값을 화면에 출력해 준다.

max() : 입력값들 중 최대값을 구해서 반환해 준다.

min() : 입력값들 중 최소값을 구해서 반환해 준다.

len() : 입력된 문자열의 길이를 구해서 반환해 준다.

sum() : 입력값들의 합계를 구해서 반환해 준다.

 

 

 

Section 09. 사용자로부터 입력받기

 

쉘 화면을 통해 사용자로부터 값을 입력 받을때는 input() 함수를 사용한다. 프로그램은 기본적으로 입력-처리-출력의 세단계를 계속 반복하면서 실행된다. 쉘화면을 통해 사용자로부터 값을 입력받을 때는 input() 함수를 사용한다. input() 함수의 괄호에 사용자에게 전달할 지시 내용을 삽입할수 있다.

 

 

 

Section 10. 모듈 맛보기

 

모듈을 임포트하고 모듈이 가진 기능을 사용해 보자. 모듈은 서로 관련있는 코드들을 모아 놓은 파일이다. 모듈을 내 프로그램에서 사용하려면 import 문을 이용해서 모듈을 임포트한다. 모듈을 임포트한 후에는 모듈이 가진 기능을 편리하게 사용할수 있다. math 모듈을 임포트 한다는 것의 의미는 내 프로그램에서 이 모듈을 사용하겠다고 파이썬에게 알려주는 것이다. 그럼 파이썬이 내프로그램에서 math 모듈을 사용할수 있게 만들어 준다. 모듈에 있는 변수 함수를 사용할때는 점 (.) 을 찍으면 된다. 원의 둘레를 cir 이라고 할때 cir = 2πr 이다.

 

math 모듈

 

math.pi : 원주율 π

sqrt() : 제곱근 을 구하는 함수 

 

 

 

Section 11. 오류와 친해지기

 

오류를 무서워하지 말자. 컴퓨터가 이해할수 없는 문법적, 논리적 문제를 오류라고 한다. 오류는 컴퓨터와의 대화 과정이므로 무서워하지 말자. 오류를 수정하는 과정을 디버깅이라고 한다. 

 

 

 

Section 12. 복합 대입 연산자

 

복합 대입 연산자란 두 개의 연산자를 결합해 놓은 것이다. 대입 연산자와 계산에 사용되는 연산자를 합쳐놓은 것이다. 복합 대입 연산자를 이용하면 코드를 간결하게 표현할수 있다. 그러나 복합 대입 연산자를 너무 많이 사용하면 오히려 코드가 복잡해 보일수 있다.

 

복합 대입 연산자의 종류

 

x += y : x = x + y

x -= y : x = x - y

x *= y : x = x * y

x /= y : x = x / y

x //= y : x = x // y

x %= y : x = x % y

x **= y : x = x ** y

 

 

 

Section 13. 연산자 우선 순위

 

연산자들 사이에는 우선 순위가 있다. 동등한 우선 순위를 가지는 연산자들이 나열되어 있을 때에는 오를쪽 방향으로 순서대로 계산한다. 괄호는 가장 높은 우선 순위를, 대입 연산자 / 복합 대입 연산자는 가장 낮은 우선 순위를 갖는다.

 

연산자 우선 순위

 

1 : ( ) 괄호

2 : ** 지수승

3 : * , / , // , % 곱셈, 나눗셈, 나머지 연산

4 : + , - 덧셈, 뺄셈

5 : = 대입 연산자와 복합 대입 연산자

 

 

 

■ 파이썬 친해지기

 

파이썬이 기본적으로 제공해 주는 자료형들을 알아본다. 파이썬을 이용하여 프로그래밍하는데 있어서 기초이고 중요하다. 자료형 이외에 다채롭게 출력하는 방법과 형변환 등의 내용도 있다.

 

☞ Chapter 2. 파이썬 친해지기

 

Section 14. 여러 개의 값 출력하기

Section 15. 정수 (int) 알아보기

Section 16. 실수 (float) 알아보기

Section 17. 복수 (complex) 알아보기

Section 18. 부울 (bool) 알아보기

Section 19. 문자열 안에 ' 또는 " 를 넣고 싶을때

Section 20. 여러줄 문자열 처리

Section 21. 문자열 연산

Section 22. 문자열 인덱싱

Section 23. 문자열 슬라이싱

Section 24. 문자열은 불변이다

Section 25. 문자열 관련 메서드

Section 26. 리스트 (list) 사용하기

Section 27. 리스트 변경하기

Section 28. 리스트 슬라이싱

Section 29. 리스트 관련 메서드 1

Section 30. 리스트 관련 메서드 2

Section 31. 리스트 관련 내장 함수

Section 32. 튜플 (tuple) 사용하기

Section 33. 튜플의 인덱싱과 슬라이싱

Section 34. 불변 객체 튜플이 가변 객체를 가지면

Section 35. 튜플의 연산과 관련 메서드

Section 36. 튜플 관련 내장 함수

Section 37. 집합 (set) 사용하기

Section 38. 집합 (set) 관련 메서드 1 - 항목 추가하고 가져오기

Section 39. 집합 (set) 관련 메서드 2 - 항목 삭제하기

Section 40. 집합 (set) 관련 메서드 3 - 집합 연산하기

Section 41. 집합 (set) 관련 연산과 내장 함수

Section 42. 사전 (dict) 사용하기

Section 43. 사전에서 값 가져오기

Section 44. 사전에서 값 삭제하기

Section 45. 사전 관련 메서드

Section 46. 형 변환

Section 47. 출력하기 - % 를 이용해 형식에 맞춰 출력하기

Section 48. 출력하기 - format() 을 이용해 형식에 맞춰 출력하기

Section 49. 출력하기 - format() 더 알아보기

 

 

Section 14. 여러 개의 값 출력하기

 

print() 로 여럭랎을 한번에 출력할수 있다. sep = '원하는 문자' 옵션을 이용하면 출력값들을 공백 대신 다른 문자로 구분하여 출력할수 있다. print() 문은 변수의 변화를 파악하면서 디버깅에 활용할수 있다.

 

 

 

Section 15. 정수 (int) 알아보기

 

정수형은 음수, 0, 양수를 표현하기 위한 것이다. 정수, 실수, 문자열과 같은 자료형(data type) 집합이다. 정수형 변수를 사용할때는 정수값의 크기에 상관없이 사용할수 있다. type() 함수는 값 또는 변수의 자료형을 알고 싶을때 사용한다. 파이썬에서는 정수형을 class 'int' 로 표현하며 int 는 정수를 의미하고 class 는 객체를 의미한다. 파이썬의 모든 요소는 객체로 구현되어 있다.

 

 

 

Section 16. 실수 (float) 알아보기

 

실수형은 소수점이 들어간 수를 표현하기 위한 것이다. 파이썬에서 실수형은 float 라고 부른다. 실수형 변수를 사용하면 정수 값보다 더 세밀한 값을 표현할수 있다. 파이썬 변수의 자료형은 저장하는 값이 무엇인지에 따라 결정된다. 파이썬의 변수는 저장한 값에 따라 형이 결정된다. 그래서 파이썬의 변수는 다양한 자료형으로 변할수 있다는 장점이 있다. 예로 number 변수에 10 을 넣으면 정수형 변수가 되고, number 에 다시 문자열을 넣으면 문자열형 변수가 된다. 이러한 특징은 파이썬이 다른 언어와 차별되는 특징이자 장점 중에 하나이다. 어느 시점에서 변수의 자료형이 무엇인지. 즉 변수가 어떤 자료형의 값을 저장하고 있는지를 확인하고 싶을때 type() 함수를 사용한다.

 

number = 10  # number 는 정수형 변수

number = "hello"  # number 는 문자열 변수

 

 

 

Section 17. 복수 (complex) 알아보기

 

파이썬은 복소수 표현도 가능하다. 파이썬에서 복소수형은 complex 라고 부르며 복소수를 표현하기 위한 것이다. comp2.real 은 실수부를, comp2.imag 는 허수부를 돌려준다. comp2conjugate() 는 켤레 복소수를 구해준다. 허수는 실수가 아닌 복소수를 뜻한다. 제곱하면 음수가 되는 수이다. 복소수를 저장하는 방법은 두가지가 있는데 그중 하나가 변수에 복소수 값을 직접 저장하는 방법이다. 수학과 다른 점은 허수 단위가 i 가 아닌 j 라서 2 + 5j 와 같이 표현하며, 2는 실수부이고 5j 는 허수부를 나타내는데 허수부에서 j 는 반드시 5 와 붙여서 써야한다. 변수 comp1 의 자료형은 복소수를 저장하고 있으니 복소수형이 되고, 파이썬에서 복소수는 complex 라고 부른다. 복소수를 저장하는 또 다른 방법은 complex() 함수를 사용하는 방법이다. 괄호 안에 실수와 허수를 입력해 주면 복소수를 만들어 주고 그 값이 변수 comp2 에 저장된다. comp2 를 출력하면 복소수 형태로 변환되어 3-6j 식으로 출력이 된다. 복소수에서 실수 부분만 따로 떼어내서 보고 싶으면 comp2.real 을 사용한다. comp2.imag 는 복소수의 허수부를 나타낸다. 켤레 복소수란 허수부의 부호를 바꾼 복소수를 말하는 것으로 a + bi 의 켤레 복소수는 a - bi 에 해당한다.

 

 

 

Section 18. 부울 (bool) 알아보기

 

부울형은 참/거짓을 표현하기 위한 자료형이다. 부울형에는 True, False 딱 2개의 값만 존재한다. 파이쎤에서 숫자 0 은 False, 그 외의 숫자는 True 를 의미한다. 

 

 

 

Section 19. 문자열 안에 ' 또는 " 를 넣고 싶을때

 

문자열안에 따옴표 등을 사용할때는 특수 문자열을 사용한다. 파이썬에서 문자열형은 str 이라고 부르며 문자열을 표현하기 위한 것이다. 문자열 안에 ' 를 넣고 싶으면 문자열을 " 로 묶어준다. 그 반대도 가능하다. 문자열 안에 ' 나 " 를 넣는 다른 방법은 특수 문자열을 사용한다. 

 

특수 문자열

 

' : 화면에 작은 따옴표를 표시

" : 화면에 큰 따옴표를 표시

n : 줄바꿈

: 화면에 역슬래시 () 를 표시

f : 탭 (tab) 만큼 띄우기

 

 

 

Section 20. 여러줄 문자열 처리

 

여러줄 문자열은 있는 그대로 출력해 준다. 파이썬에서는 여러줄 문자열을 만들수 있다. 여러줄 문자열은 ''' 또는 " " " 로 문자열을 묶어서 표현한다. 여러줄 문자열을 사용하면 줄바꿈, 탭, 공백 등이 그대로 표현된다. 

 

 

 

Section 21. 문자열 연산

 

문자열에서 곱셈은 문자열 반복, 덧셈은 문자열 연결을 의미한다. 문자열 * 숫자는 문자열을 숫자만큼 반복하라는 명령이다. 문자열 + 문자열은 두 문자열을 연결하라는 명령이다. 문자열 변수에 대해서도 이러한 연산이 가능하다. 

 

 

 

Section 22. 문자열 인덱싱

 

문자열을 구성하는 각 문자는 번호를 이용하여 접근할수 있다. 인덱스는 문자열에 지정되어 있는 번호를 말하며, 정방향으로는 0 부터 시작하고 역방향으로는 -1 부터 시작한다. 인덱싱은 인덱스를 이용해서 문자를 가져오는 기능을 말한다. 시퀀스형 객체란 순서를 가지고 있어서 인덱싱이 가능한 객체를 말한다.

 

 

 

Section 23. 문자열 슬라이싱

 

슬라이싱을 이용해 문자열의 일부분을 추출할수 있다. 역방향으로도 슬라이싱 할수 있다. 추출하고 싶은 부분의 시작 위치와 끝 위치를 알면 슬라이싱 할수 있다. 슬라이싱에서 끝 위치의 값은 포함하지 않는다.

 

 

 

Section 24. 문자열은 불변이다

 

문자열의 문자들은 변경할수 없는 불변 객체다. 문자열 메서드를 이용하면 새로운 문자열이 생성되는 것이지 원본 문자열이 바뀌는 것은 아니다. 문자열을 강제로 바꾸려고 할 경우 에러가 발생한다.

 

 

 

Section 25. 문자열 관련 메서드

 

문자열을 위한 유용한 메서드가 많으니 부록을 참조한다. 메서드를 여러개 나열하여 사용할수 있으며, 나열된 순서대로 적용하면 된다. 문자열 메서드를 모두 외울 필요는 없고 대략 어떤 종류의 메서드가 있는지만 알아둔다.

 

 

 

Section 26. 리스트 (list) 사용하기

 

리스트는 여러 항목을 저장하고 관리하고 싶을때 사용한다. 하나의 리스트 안에 여러 종류의 자료형을 담을수 있다. 리스트의 인덱싱은 문자열의 인덱싱 방법과 거의 같다. 파이썬에서 리스트를 만들때는 대괄호[] 를 이용해서 만든다.

 

 

 

Section 27. 리스트 변경하기

 

리스트의각 항목을 변경할수 있다. 리스트의 항목을 바꾸고 싶을때는 인덱스를 이용하여 접근하면 된다. 리스트와 리스트를 연결할때는 + 연산자를 사용하며, 이때 새로운 리스트가 생성된다.

 

 

 

Section 28. 리스트 슬라이싱

 

리스트도 문자열처럼 슬라이싱 할수 있다. 일부분만 추출할수 있다. 리스트 슬라이싱 방법은 문자열의 슬라이싱과 같다. 슬라이싱하면 새로운 리스트가 생기며 이것을 계속 사용하려면 별도의 변수에 저장해야 한다.

 

 

 

Section 29. 리스트 관련 메서드 1

 

리스트의 메서드인 index(), append(), insert(), extend() 를 알아본다. 리스트는 다양한 메서드를 가지고 있어 이걸 알아두면 좋다. 리스트에서 특정 항목의 위치를 가져오기 위한 index() 메서도가 있다. 리스트에 항목을 추가하기 위한 append(), insert(), extend() 메서도가 있으며 각각의 차이를 익힌다. 

 

리스트 메서드

 

list.index(obj) : 리스트에서 obj 객체가 위치한 가장 첫번째 인덱스를 리턴한다. 인덱스 리턴 값이 없으면 오류발생

list.append(obj) : 리스트에 obj 객체를 추가한다. 리턴값은 없고 리스트만 갱신

list.insert(index.obj) : 리스트의 index 위치에 obj 객체를 삽입한다. 리턴값은 없고 리스트만 갱신

list.extend(obj) : 리스트에 obj 객체를 추가한다. 리턴값은 없고 리스트만 갱신

 

 

 

Section 30. 리스트 관련 메서드 2

 

리스트에 관련된 다양한 메서드를 배운다. 리스트의 항목들을 정렬하기 위한 메서드로 sort() 와 reverse() 가 있다. pop(), remove() 둘다 항목을 삭제하지만 해당 항목을 사용하고 싶으면 pop() 을 사용한다. count() 메서드는 항목의 개수를 셀때 사용한다.

 

리스트 메서드

 

list.sort() : 리스트를 구성하는 항목들을 순서대로 정렬한다. 리턴값은 없고 리스트 내부를 정렬

list.reverse() : 리스트를 구성하는 항목들을 거꾸로 정렬한다. 리턴값은 없고 리스트 내부를 정렬

list.pop() : 리스트의 맨 마지막 항목을 리턴하고 삭제한다. 살제된 항목을 리턴

list.remove(obj) : 리스트에서 obj 객체를 삭제한다. 리턴값은 없고 리스트만 갱신

list.count(obj) : 리스트에서 obj 객체가 몇개 있는지 알려준다. obj 객체의 개수를 리턴

 

 

 

Section 31. 리스트 관련 내장 함수

 

리스트와 함께 사용할수 있는 내장 함수를 알면 코딩이 편하다. 리스트의 sort() 메서드와 sorted 함수의 차이를 알자. list() 함수는 다른 종류의 시퀀스형 객체를 리스트로 만들어준다. 시퀀스형 객체란 순서를 가지고 있어서 위치 번호를 이용해 인덱싱이 가능한 객체를 말한다. str, list, tuple, range 등이 있다.

 

리스트와 함께 사용할수 있는 내장 함수

 

len() : 리스트에 들어있는 항목의 개수를 리턴

max() : 리스트에 들어있는 항목 중 최대값을 리턴.

min() : 리스트에 들어있는 항목 중 최소값을 리턴

sum() : 리스트에 들어있는 항목들의 합을 리턴

sorted() : 리스트에 들어있는 항목을 오름차순으로 정렬

list(seq) : 괄호안의 시퀀스형 객체 seq 를 리스트로 만든다

 

 

 

Section 32. 튜플 (tuple) 사용하기

 

튜플은 리스트와 같지만 가장 큰 차이점은 항목을 변경할수 없다는 것이다. 튜플도 리스트처럼 여러 종류의 데이터를 담을수 있다. 튜플을 만들때 값들 사이에 콤마 (,) 만 사용해도 튜플로 인정된다. 튜블은 리스트와 달리 항목을 수정할수 없다.

 

 

 

Section 33. 튜플의 인덱싱과 슬라이싱

 

모든 시퀀스형 객체에 적용할수 있으며 튜플의 인덱싱과 슬라이싱 방법은 문자열, 리스트와 동일하다. 튜를의 크기를 벗어난 인덱스를 접근하려고 하면 오류가 난다. 인덱스는 반드시 정수만 사용한다. 

 

 

Section 34. 불변 객체 튜플이 가변 객체를 가지면

 

튜플은 불변 객체이지만 항목이 가변 객체이면 가변 객체는 수정될수 있다. 불변 객체 튜를이 가변 객체 리스트를 항목으로 가지고 있을땐 리스트의 항목 수정이 가능하다. 튜플이 불변 객체라는 의미는 튜플의 항목을 수정할수 없다는 의미일뿐 튜플 변수에 새로운 값을 저장할수 없다는 의미는 아니다. 튜플은 불변 객체라서 처리 속도가 빠르고 내용의 일관성에 대한 믿음이 있다.

 

 

 

Section 35. 튜플의 연산과 관련 메서드

 

튜플에서 사용할수 있는 연산과 메서드를 알아본다. del 은 변수 등 객체를 삭제하는 기능을 가진 명령어이다. in 연산자는 ㄱ랎이 있으면 True 이고, not in 연산자는 값이 없으면 True 이다. count() 는 주어진 값의 개수, index() 는 주어진 값의 첫번째 위치를 알려준다. 

 

튜플 메서드

 

tuple.count(obj) : 튜플에서 obj 객체가 몇개 있는지 알려준다. obj 객체의 개수를 리턴

tuple.index(obj) : 튜플에서 obj 객체가 위치한 가장 첫번째 인덱스를 리턴한다. 인덱스 리턴, 값이 없으면 오류 발생

 

 

 

Section 36. 튜플 관련 내장 함수

 

튜플과 함께 사용되는 내장 함수의 특징을 파악한다. sorted() 함수에 튜플을 적용하면 정렬된 리스트를 얻게 된다. tuple() 함수는 시퀀스 객체를 입력받아 튜플을 만들어준다. tuple() 함수에 입력된 시퀀스 객체의 원본은 변하지 않는다. sorted() 함수가 반한해주는것은 튜플이 아니라 리스트다.

 

튜플과 함께 사용할수 있는 내장 함수

 

len() : 튜플에 들어있는 항목의 갯수를 리턴

max() : 튜플에 들어있는 항목중 최대값을 리턴

min() : 튜플에 들어있는 항목중 최소값을 리턴

sum() : 튜플에 들어있는 항목들의 합을 리턴

sorted() : 튜플에 들어있는 항목을 오름차순으로 정렬

tuple(seq) : 괄호안의 시퀀스형 객체 seq 를 튜플로 새롭게 만든다

 

 

 

Section 37. 집합 (set) 사용하기

 

집합의 특징은 두 가지아디. 중복이 없다는 것과 순서가 없다. 집합은 수학에서 배우는 집합과 같은 개념이다. 빈 집합을 만들때는 set() 함수를 사용한다.

 

 

 

Section 38. 집합 (set) 관련 메서드 1 - 항목 추가하고 가져오기

 

항목을 추가하려면 add() 와 update() 메서드, 가져올땐 pop() 메서드를 사용한다. 집합은 값을 처리하기 위한 다양한 메서드를 제공하고 있다. 집합은 순서가 없기 때문에 값을 추가해도 어디에 배치될지 알수 없다. 집합은 순서가 없기 때문에 값을 추출할때 어떤 값이 나올지 알수 없다.

 

집합 메서드

 

set.add(obj) : 집합에 obj 객체를 추가한다. 리턴값은 없고 집합만 갱신

set.update(obj1, obj2) : 집합에 여러 객체를 추가한다. 리턴값은 없고 집합만 갱신

set.pop() : 집합에서 임의의 한 항목을 리턴하고 집합에서 삭제한다. 삭제돈 항목을 리턴

 

 

 

Section 39. 집합 (set) 관련 메서드 2 - 항목 삭제하기

 

삭제할때는 discard() 와 remove() 메서드, 완전히 비울때는 clear() 메서드를 사용한다. discard() 메서드는 삭제하는 항목이 없어도 문제없다. remove() 메서드는 삭제하려는 항목이 없으면 오류가 발생한다. clear() 메서드는 집합내 모든 항목을 삭제한 빈 집합을 만든다.

 

집합 메서드

 

set.discard(obj) : 집합에서 obj 객체를 삭제. 삭제하려는 객체가 집합에 없어도 오류 없다. 리턴값은 없고 집합만 갱신 

set.remove(obj) : 집합에서 obj 객체를 삭제. 삭제하려는 객체가 집합에 없으면 오류 발생. 리턴값은 없고 집합만 갱신

set.clear() : 집합의 모든 항목을 삭제. 리턴값은 없고 집합을 반집합으로 갱신

 

 

 

Section 40. 집합 (set) 관련 메서드 3 - 집합 연산하기

 

집합 연산자와 메서드로 집합 연산하는 방법을 알아본다. 파이썬의 집합은 수학의 집합과 똑가은 연산을 제공해준다. 집합 연산에 관련된 연산자와 메서드가 함께 있다. 집합 연산을 해도 원본 집합은 변하지 않고 새로운 집합을 생성해 준다. 

 

집합 메서드

 

set.union(set) : 연산자 | . 집합과 set 집합의 합집합을 구한다. 합집합을 리턴

set.intersection(set) : 연산자 & . 집합과 set 집합의 교집합을 구한다. 교집합을 리턴

set.difference(set) : 연산자 - . 집합에서 set 집합의 차집합을 구한다. 차집합을 리턴

set.symmetric_difference(set) : 연산자 ^ . 집합과 set 집합의 대칭차집합을 구한다. 대칭차집합을 리턴

set.issubset(set) : <= . 집합이 set 집합의 부분집합인지 알려준다. 부분집합이면 True, 아니면 False 를 리턴

set.issuperset(set) : >= . 집합이 set 집합을 포함하는지 알려준다. 포함하면 True, 아니면 False 를 리턴함

 

 

 

Section 41. 집합 (set) 관련 연산과 내장 함수

 

집합과 관련된 연산과 내장 함수를 알아본다. in과 not in 연산의 결과는 True 또는 False 이다. sorted() 함수를 사용하면 집합이 아닌 리스트로 반환해 준다. set() 함수는 주어진 값을 집합으로 만들어주는 함수이다. 

 

집합과 함께 사용할수 있는 내장 함수

 

len() : 집합에 들어있는 항목의 개수를 리턴

max() : 집합에 들어있는 항목중 최대값을 리턴

min() : 집합에 들어있는 항목중 최소값을 리턴

sum() : 집합에 들어있는 항목들의 합을 리턴

sorted() : 집합에 들어있는 항목을 오름차순으로 정렬

set() : 괄호안의 객체를 집합으로 만든다

 

 

 

Section 42. 사전 (dict) 사용하기

 

사전은 키와 값의 쌍으로 항목이 구성된다. 사전도 집합처럼 중괄호 {} 를 사용한다. 파이썬의 사전은 실제 사전과 같이 항목이 키와 값의 쌍으로 구성되어 있다. 키는 불변 객체여야 하며 절대 중복될수 없지만, 값은 중복될수 있다.

 

 

 

Section 43. 사전에서 값 가져오기

 

사전은 순서가 없어서 키를 이용해야 값을 사용할수 있다. 사전에서 값을 가져오는 방법은 키를 직접 이용하는 방법과 get() 메서드를 숑하는 방법이 있다. 접근하려는 키가 존재하면 기존 값을 새로운 값으로 수정하고, 접근하려는 키가 존재하지 않으면 새로운 항목의 키와 값으로 추가된다.

 

사전 메서드

 

dict.get(key) : 키에 해당하는 값을 돌려준다. 키에 대응하는 값을 리턴

 

 

 

Section 44. 사전에서 값 삭제하기

 

사전의 항목을 삭제해 본다. pop() 과 popitem() 은 항목을 반환해 주고 동시에 사전에서 삭제시키지만, pop() 은 지정한 항목을, popitem() 은 임의의 항목을 반환한다는 점에서 차이가 있다. clear() 메서드는 사전의 모든 항목을 삭제하는 메서드이다. del 명령으로 항목을 삭제할수 있고, 변수 자체를 삭제할수도 있다.

 

 

 

Section 45. 사전 관련 메서드

 

사전의 내용을 종류별로 가져오는 방법을 알아본다. 사전의 내용을 받는 세가지 메서드 items(), keys(), values() 가 있다. 이 메서도로 받은 값들은 나중에 반복문과 결합하면 강력해진다. 이 메서드로 받은 값을 리스트나 튜플로 변경하여 사용할수도 있다.

 

사전 메서드

 

dict.pop(key, [default]) : 해당 key 가 사전에 있으면 대응하는 값을 돌려주고 원본 사전에서 해당 항목을 삭제한다. 만약 사전에 key 가 없으면 지정해둔 default 를 리턴함. 이때 default 를 지정하지 않았다면 에러가 발생한다. 사전에 키가 있으면 대응하는 값을 리턴, 키가 없으면 default 를 리턴

dict.popitem() : 사전에서 임의의 항목을 돌려주고 원본 사전에서 해당 항목을 삭제한다. 임의의 항목을 리턴

dict.clear() : 사전의 모든 항목을 삭제한다. 리턴값은 없고, 사전을 빈사전으로 갱신

dict.items() : 사전의 키와 값을 dict_items 형태로 돌려준다. dict_items 형태로 리턴

dict.keys() : 사전의 키들만 dict_keys 형태로 돌려준다. dict_keys 형태로 리턴

dict.values() : 사전의 값들만 dict_values 형태로 돌려준다. dict_values 형태로 리턴

 

 

 

Section 46. 형 변환

 

다른 형태의 자료로 변환하는 것을 형 변환이라고 한다. int() 나 float() 로 숫자가 될수 있는건 숫자 모양을 한 자료여야 한다. 이외에도 다양한 자료형들 간에 형 변환이 가능하다.

 

 

 

Section 47. 출력하기 - % 를 이용해 형식에 맞춰 출력하기

 

% 연사자를 이용해서 출력하기. 형식 문자열을 이용하면 문자열 내에서 원하는 위치에 값을 출력할수 있다. 가장 많이 사용되는 %s, %d, %f 의 의미는 꼭 알아두자. % 를 사용하는 방식은 여전히 많이 사용된다.

 

print() 함수의 다양한 형식 문자열

 

s : 문자열 출력,  형식 : '%s',  예시->출력 : % ('안녕') -> 안녕

d : 십진 정수 출력,  형식 : '%d',  예시->출력 : % (2020) -> 2020

f, F : 실수 출력,  형식 : '%f',  예시->출력 : % (3.14) -> 3.14

x, X : 16진수 출력,  형식 : '%x',  예시->출력 : % (10) -> a

e, E : 실수를 지수승 형태로 출력,  형식 : '%e',  예시->출력 : % (0.000123) -> 1.230000e-04

 

입력 : print ('%s, %s' % ('하나', '둘')

결과 : 하나, 둘

 

 

 

Section 48. 출력하기 - format() 을 이용해 형식에 맞춰 출력하기

 

% 연산자 대신 format() 을 이용하여 출력한다. % 연산자를 이용하는 방식보다 format() 을 이용하는 것이 더 효율적이다. format() 의 각 인수는 번호를 가지고 있어서 이걸 이용하면 편리하다. 이방식에서도 형식 문자열을 사용할수 있다. 

 

입력 : print ('{0}', '{1}' . format ('하나', '둘'))

결과 : 하나, 둘

 

 

 

Section 49. 출력하기 - format() 더 알아보기

 

format() 에 인수번호 대신 키워드 인수를 사용할수 있다. 공부하기 전에 앞에 있는 출력하기를 읽어본다. 중괄호에 인수번호 대신 키워드 인수를 사용할수 있다. format() 은 여러줄 문자열에도 사용할수 있다. 여기서 food 와 base 가 키워드 인수다.

 

 

 

■ 프로그램의 흐름 제어하기

 

지금까지 코드들이 위에서 아래로 한줄씩 실행하면서 프로그램이 작동하는 명령을 순서대로 실행하는 구조를 순차구조라 한다. 이제부터는 선택구조와 반복구조를 학습한다. 선택구조는 참/거짓에 따라 실행할 명령과 실행하지 않을 명령을 선택해주는 구조다. 반복구조는 특정 명령을 반복해서 실행하게 만드는 구조다. 제어문이란 선택구조/반복구조처럼 프로그램의 흐름에 변화를 주기 위한 파이썬 명령을 말한다. 제어문에는 선택구조를 구현하는 if 문과 반복 구조를 구현하는 while 문, for 문이 있다. 제어문에 대해서 공부한다.

 

☞ Chapter 3. 프로그램의 흐름 제어하기

 

Section 50. 그래픽 - turtle 모듈 사용하기

Section 51. 조건문 - if 문

Section 52. 조건문 - if 와 비교 연산자

Section 53. 조건문 - if 와 논리 연산자

Section 54. 조건문 - in 과 not in 연산자

Section 55. 조건문 - if 와 else 문

Section 56. 조건문 - if 와 elif 문

Section 57. 반복문 - while 

Section 58. 반복문 - for 문

Section 59. 반복문 - for 문과 range() 함수

Section 60. 반복문 - 중첩 for 문

Section 61. 반복문 중지 - break

Section 62. 반복문 - continue

 

 

Section 50. 그래픽 - turtle 모듈 사용하기

 

turtle 모듈은 그래픽을 그릴수 있도록 파이썬이 제공하는 내장 모듈이다. 간단한 그래픽을 그리는데 도움이 되는 코드들의 모음이다. Pen() 메서드는 캔버스를 생성함과 동시에 캔버스에 대한 사용권을 생성한다. 화살표가 이동하는 단위는 픽셀이고, 픽셀은 화면을 구성하는 단위이다. 

 

그래픽 turtle 메서드

 

t.reset() : 캔버스를 깨끗이 지우고 화살표를 원위치로 위치시킨다.

t.clear() : 캔버스를 깨끗이 지우고 화살표는 그대로 둔다.

t.toward(값) : 화살표가 '값'만큼 앞으로 이동한다.

t.backward(값) : 화살표가 '값'만큼 뒤로 이동한다.

t.right(값) : 화살표가 바라보는 방향에서 오른쪽 시계방향으로 '값'만큼 회전한다.

t.left(값) : 화살표가 바라보는 방향에서 왼쪽 반시계방향으로 '값'만큼 회전한다.

t.up() : 펜을 올린다. 화살표가 이동해도 선이 안그려진다.

t.down() : 펜을 내린다. 화살표가 이동할때 선이 그려진다.

 

 

 

Section 51. 조건문 - if 문

 

if 문 블록은 조건식의 판단 결과가 참일 때만 실행한다. 

 

조건문은 if 를 이용하고, 조건식의 참/거짓을 판단하는 것이 가장 중요하다. 각 자료형 별로 거짓인 경우를 알아둔다. 블록은 반드시 들여쓰기를 해야 한다. 참/거짓은 논리법칙의 수학적 표현인 부울 (bool) 형이다. 제어문 공부할때 가장 중요한 요소로 꼭 알고 시작한다.

 

if 조건식 :

 

명령문1

명령문2

명령문3

 

자료형 별로 참과 거짓이 결정되는 것들

 

숫자 : 참 (True) 는 0 이 아닌 값. 거짓 (False) 은 0

문자열 : 참 (True) 는 "abc" 빈문자열이 아닌 값. 거짓 (False) 은 " " 빈 문자열

리스트 : 참 (Ture) 는 [1,2,3,] 빈 리스트가 아닌 값. 거짓 (False) 은 [ ] 빈 리스트

튜플 : 참 (True) 는 (1,2,3) 빈 튜블이 아닌 값. 거짓 (False) 은 ( ) 빈 튜플

 

 

 

Section 52. 조건문 - if 와 비교 연산자

 

비교 연산은 두값을 비교하여 참 또는 거짓을 알려준다. 비교 연산은 두값을 비교하기 위한 연산이다. 비교 연산의 결과는 반드시 참 또는 거짓이다. 비교 연산자의 우선 순위는 산술 연산자보다 낮다.

 

조건식을 위한 비교 연산자

 

x > y : x 값이 y 값보다 크면 True, 그 외는 False

x < y : x 값이 y 값보다 작으면 True, 그 외는 False

x >= y : x 값이 y 값보다 크거나 같으면 True, 그 외는 False

x <= y : x 값이 y 값보다 작거나 같으면 True, 그 외는 False

x == y : x 와 y 의 값이 같으면 True, 그 외는 False

x != y : x 와 y 의 값이 다르면 True, 그 외는 False

 

 

연산자 우선 순위

 

우선 순위 1 : 연산자 ( )  괄호를 가장 먼저 계산한다.

우선 순위 2 : 연산자 **  지수승

우선 순위 3 : *, /, //, %  곱셈과 나눗셈

우선 순위 4 : +, -  덧셈과 뺄셈

우선 순위 5 : ==, !=, <, >, <=, >=  비교 연산자

우선 순위 6 : =, 복합 대입 연산자  대입 연산자는 가장 마지막에 처리한다.

 

 

 

Section 53. 조건문 - if 와 논리 연산자

 

논리 연산자는 참과 거짓을 위한 연산자이다. 논리 연산의 결과는 반드시 참 또는 거짓이다. 논리 연산자의 우선 순위는 비교 연산자보다 낮다.

 

논리 연산자 기호

 

x and y : x 와 y 가 모두 True 이면 True, 그 외는 False

x or y : x 와 y 중 하나라도 True 이면 True, 그 외는 False

not x : x 가 True 이면 False, x 가 False 이면 True, 즉 x 의 결과를 반대로 바꿔준다.

 

연산자 우선 순위

 

우선 순위 1 : 연산자 ( )  괄호를 가장 먼저 계산한다.

우선 순위 2 : 연산자 **  지수승

우선 순위 3 : *, /, //, %  곱셈과 나눗셈

우선 순위 4 : +, -  덧셈과 뺄셈

우선 순위 5 : ==, !=, <, >, <=, >=  비교 연산자

우선 순위 6 : not  논리 연산자

우선 순위 7 : and  논리 연산자

우선 순위 8 : or  논리 연산자

우선 순위 9 : =, 복합 대입 연산자  대입 연산자는 가장 마지막에 처리한다.

 

 

 

Section 54. 조건문 - in 과 not in 연산자

 

in 은 존재하는지, not in 은 존재하지 않는지를 확인해주는 연산자이다. x in s 는 s 안에 x 가 존재하는가를 묻고, 있으면 True, 없으면 False 를 알려주는 연산자이다. x not in s 는 s 안에 x 가 없는지를 묻고, 없으면 True, 있으면 False 를 알려주는 연산자이다. 두 연산의 결과는 모두 True 또는 False 로 반환된다. gray 와 lightgray 처럼 색상을 표현하기 위한 몇가지 컬러 상수는 부록을 참고한다.

 

 

 

Section 55. 조건문 - if 와 else 문

 

else 블록은 조건식이 거짓일때 실행되는 코드이다. if 문의 조건식이 거짓일때도 실행할 명령어를 지정하기 위해 else 를 사용한다. else 블록은 조건식이 거짓일때 실행할 코드들을 입력한다. if 블록은 참일때만, else 블록은 거짓일 때만 실행되므로 if ~ else 를 사용하면 조건식이 참이든 거짓이든 상관없이 실행되는 코드가 존재한다. else 문 블록은 if 문의 조건식이 거짓일때만 실행하는 블록이다.

 

 

 

Section 56. 조건문 - if 와 elif 문

 

if 문에 조건식을 2개 이상 사용하고 싶다면 elif 문을 사용한다. elif 문을 이용하면 여러개의 조건식을 추가할수 있다. if 블록, elif 블록, else 블록 중 단 하나의 블록만 실행된다. else 블록에는 모든 조건식이 거짓일때 실행할 코드를 삽입한다. input() 함수로 받은 값은 문자열형이다. 

 

 

 

Section 57. 반복문 - while 

 

while 문의 조건식이 참인 동안 while 블록이 반복 실행된다. while 문은 특정코드를 반복 실행하고 싶을때 사용한다. while 문 조건식이 참일때만 while 블록이 실행된다. 조건식을 조절하여 while 블록 실행 횟수를 조절할수 있다. 무한 루프를 만드는 코드는 다음과 같다. while True : while 문 블록.

 

 

 

Section 58. 반복문 - for 문

 

for 문은 시퀀스형 객체의 항목수 만큼 반복한다. 매 회전마다 for 문 변수는 시퀀스형 객체의 항목을 순서대로 저장한다. for 문은 실행 횟수가 정해져 있을때, while 문은 정해져 있지 않을때 주로 사용한다.

 

 

 

Section 59. 반복문 - for 문과 range() 함수

 

range() 함수를 for 문에서 이용하면 아주 많은 반복을 쉽게 구현할수 있다. range() 함수는 range 객체를 만들어준다. range (시작값, 종료값, 증가값) 에서 종료값은 필수로 입력해야 한다. range() 로 만든 range 객체를 리스트나 튜플 등으로 변환할수 있다.

 

range() 함수의 기본적 사용법

 

for 변수 in range (반복횟수) :

명령어1

명령어2

 

range (시작값, 종료값, 증가값)

 

 

 

Section 60. 반복문 - 중첩 for 문

 

중첩 for 문이란 for 문 블록에 또 다른 for 문이 들어 있는것을 말한다. for 문 블록에는 변수 할당이나 if 문, for 문, while 문 등 다양한 코드들이 삽입될수 있다. for 1 문 블록이 한번 실행 될때마다 for 2 문 블록이 모두 실행 완료 되어야 for 1 문이 다음 회전으로 넘어 갈수 있다.

 

중첩 for 문 형태

 

for 문 :

  명령어 1

  명령어 2

  for 문 :

    명령어 3

    명령어 4

    명령어 5

  명령어 6

 

 

 

Section 61. 반복문 중지 - break

 

break는 반복문을 중지하기 위한 명령어이다. break는 반복문을 탈출하는 역할을 한다. break를 만나면 반복문은 즉시 탈출하기 때문에 보통 if 문 등을 이용해 특정 조건하에서만 실행되도록 한다. 중첩 반복문에서 사용하면 가장 가까운 반복문을 탈출한다.

 

 

 

Section 62. 반복문 - continue

 

continue 는 프로그램의 흐름을 반복문의 시작점으로 즉시 이동시킨다. continue 는 보통 if 문 등을 이용해 특정 조건 하에서만 실행되도록 한다. 중첩 반복문에서 사용하면 가장 가까운 반복문의 시작점으로 이동한다.

 

 

 

■ 파이썬 함수

 

지금까지 파이썬이 제공해 주는 내장함수인 range() 함수, print() 함수, type() 함수 등 다양한 함수들을 사용했다. 그런데 코딩을 하다보면 파이썬에서 제공해주는 내장함수로는 부족하다고 느낄때가 많다. 이럴때는 내가 필요로 하는 함수를 직접 만들어서 사용하면 된다. 함수를 직접 만들어 사용하는 방법에 대해 공부한다.

 

☞ Chapter 4. 파이썬 함수

 

Section 63. 가장 심플한 함수

Section 64. 매개 변수도 있고 반환도 있는 함수

Section 65. 함수 내용만 있는 함수

Section 66. 매개 변수만 있는 함수

Section 67. 두개 이상의 매개 변수

Section 68. 리턴값

Section 69. 매개 변수의 기본값 설정해 두기

Section 70. 가변 인수

Section 71. 함수 정보 표시하기 (__doc__)

Section 72. 변수의 범위 1 (전역변수와 지역변수)

Section 73. 변수의 범위 2 (동일한 이름의 변수가 전역과 지역에 있을 때)

Section 74. 변수의 범위 3 (global)

Section 75. 변수의 범위 4

Section 76. 내장 함수 - abs() 함수

Section 77. 내장 함수 - bool() 함수

Section 78. 내장 함수 - dir() 함수와 help() 함수

Section 79. 내장 함수 - eval() 함수

Section 80. 내장 함수 - exec() 함수

Section 81. 내장 함수 - compile() 함수

Section 82. 내장 함수 - float() 함수

Section 83. 내장 함수 - int() 함수

Section 84. 내장 함수 - len() 함수 

Section 85. 내장 함수 - pow() 함수, round() 함수, sum() 함수

Section 86. 내장 함수 - max() 함수와 min() 함수 

 

 

Section 63. 가장 심플한 함수

 

함수를 사용하면 가독성이 높아지고 재사용성이 증가한다. 여러번 재사용할 코드는 묶어서 함수로 만들자. 함수를 만들면 가독성이 높아지고 재사용성으로 인해 효율적인 코딩이 가능하다. 함수 블록도 역시 들여쓰기로 구분한다.

 

함수를 정의하는 방법

 

def 함수 이름 (매개변수1, 매개변수2, ... 매개변수 n) :

명령어1

명령어2

(들여쓰기 space 후) return 반환값

 

 

 

Section 64. 매개 변수도 있고 반환도 있는 함수

 

함수에서 매개 변수는 입력이고 반환값은 출력과 같다. 함수를 정의한 코드의 아래 부분에서 함수를 호출할수 있다. 매개 변수는 함수의 입력으로서 함수를 호출할때 괄호 안에 넣는 값이 저장된다. return 문은 함수를 종료하거나 혹은 함수 종료아 함께 결과값을 돌려주는 역할을 한다. 함수선언부 (함수헤더)는 선언의 의미이고 실제로 아무런 실행을 하지 않는다. 매ㅐ 변수도 변수이기 대문에 변수명 만드는 5가지 규칙을 따른다. 

 

함수 이름을 정할때는 함수의 기능을 잘 설명할수 있는 단어로 정한다.

 

def abs (number) :

 

def : 함수 정의 키워드

abs : 함수 이름

number : 함수의 입력, 매개변수

 

 

 

Section 65. 함수 내용만 있는 함수

 

매개변수도 없고, 반환값도 없는 함수를 만들수 있다. 함수를 정의할때 입력이 필요 없다면 매개변수를 생략하고, 함수 호출시에도 빈칸으로 호출한다. 함수를 정의할때 실행하고 돌려줄 결과값이 없다면 return 문을 생략할수 있다. return 문이 없을땐 함수 블록의 마지막 문장이 함수 블록의 끝을 의미한다.

 

 

 

Section 66. 매개 변수만 있는 함수

 

변환값 없이 매개변수만 있는 함수도 만들수 있다. 함수에 입력이 필요하면 함수를 정의할때 매개 변수를 넣고, 함수 호출시에 값을 넣어 호출한다. 매개 변수는 함수의 입력이며, return 은 함수의 출력이라고 할수 있다. 함수에 매개 변수를 넣을 것인지, 반한값을 설정할것인지 하는것은 전적으로 프로그래며의 마음에 달렸다.

 

 

 

Section 67. 두개 이상의 매개 변수

 

필요하다면 함수 정의시에 여러개의 매개 변수를 만들수 있다. 매개 변수는 함수가 필요로 하는 만큼 정의할수 있다. 일반적으로 함수 호출시 매개 변수의 개수만큼 값을 입력해 준다. 매개 변수가 여러개일때 호출시 입력된 값이 차례대로 저장된다.

 

2개 이상의 매개 변수 일때 값은 순서대로 저장된다.

 

def func (a,b,c):

...

func (10,20,30)

 

 

 

Section 68. 리턴값

 

리턴값은 없을수도 있고, 하나 또는 여러값일수 있다. return 문이 없는 함수는 None 값을 리턴한다. return 문은 하나의 객체만 돌려줄수 있다. 리스트, 튜플, 사전 등의 자료형 사용하면 한번에 여러개의 값을 돌려줄수 있다.

 

 

 

Section 69. 매개 변수의 기본값 설정해 두기

 

매개변수에 기본값을 설정하면 함수호출시 생략할수 있다. 매개 변수에 기본값을 설정할수 있다. 기본값이 설정된 매개 변수를 함수 호출시 생략하면 기본값이 할당된다. 기본값이 설정된 매개변수는 반드시 기본값이 없는 매개변수 뒤에만 배치할수 있다. 매개변수 who 처럼 함수를 정의할때 매개변수에 값을 할당해 놓으면 who 의 기본값이 설정된다.

 

 

 

Section 70. 가변 인수

 

함수에 필요한 값들이 가변적이면 가변 인수를 사용한다. 함수에 필요한 값이 여러개이면서 가변적일때는 가변인수를 사용한다. 가변인수는 함 함수에 하나만 사용할수 있다. 가변인수 뒤에 매개 변수는 올수 없다. 함수의 매개 변수에 * 을 붙인다. 이렇게 함수에 전달된 값들은 튜를의 형태로 저장된다.

 

가변인수 사용

 

def func(*arg)

def func(a, *arg)

def func(a, b, *agr)  

 

 

 

Section 71. 함수 정보 표시하기 (__doc__)

 

함수 정보는 help() 로 확인할수 있고, __doc__ 로 수정할수 있다. 함수에 대한 정보를 얻고 싶을때는 내장함수인 help() 함수를 사용한다. 함수 설명문은 여러줄 문자열(''')을 이용한다. 함수 설명문을 수정하고 싶다면 __doc__ 속성을 이용한다.

 

 

 

Section 72. 변수의 범위 1 (전역변수와 지역변수)

 

변수의 선언위치에 따라 전역변수와 지역변수로 나뉜다. 변수는 유효범위에 따라 전역변수와 지역변수로 나뉜다. 전역변수와 지역변수를 구분 짓는 기준은 선언된 위치이다. 지역변수는 함수 블록 밖에서 사용할수 없다. 지역변수는 함수 정의 시점에서는 생성되지 않는다. 함수 실행 시점에서 생성된다.

 

전역변수와 지역변수 전역과 지역의 구분

 

global_var = '전역변수'

 

def scope():

local_var = '지역변수'

print(global_var)

print(local_var)  # 함수영역(지역) 에서 실행

 

scope()  # scope() 함수 실행

 

print()

print(global_var)

print(local_var)  # 함수영역을 벗어나므로 오류발생

 

 

 

Section 73. 변수의 범위 2 (동일한 이름의 변수가 전역과 지역에 있을 때)

 

변수가 사용될때는 자신이 사용된 영역에서 먼저 동일한 이름의 변수를 찾는다. 전역과 지역에 변수명이 같은 변수가 있어도 전혀 다른 변수이다. 이름이 같은 변수가 전역과 지역에 모두 있을때 변수는 자신이 사용된 영역에서 먼저 동일한 이름을 찾는다. 자신이 사용된 영역에 동일한 이름의 변수가 없다면 더 넓은 영역에서 찾는다.

 

 

 

Section 74. 변수의 범위 3 (global)

 

지역에서 전역변수를 변경하고 싶을때 global 명령어를 사용한다. 전역변수의 유효범위는 프로그램 전체이지만 지역에 동일한 이름의 변수가 있으면 지역변수가 우선하기 때문에 global 명령어가 필요하다.

 

 

 

Section 75. 변수의 범위 4

 

if 블록, for 블록, while 블록, with 블록, try-except 블록 등은 변수의 새로운 영역을 만들지 않는다. 함수 영역과 같이 새로운 영역을 만들수 있는 것은 함수 이외에 클래스, 모듈 등이 있다. 가장 넓은 영역에서도 동일한 이름의 변수를 찾지 못하면 오류가 발생한다. 

 

 

 

Section 76. 내장 함수 - abs() 함수

 

abs() 함수는 절대값을 구해주는 내장함수이다. 내장함수는 파이썬이 공짜로 제공해주는 함수를 말한다. 내장함수는 모듈을 임포트하지 않고 언제든지 사용할수 있다. abs() 함수는 절대값을 구해주는 함수이다.

 

 

 

Section 77. 내장 함수 - bool() 함수

 

bool() 함수는 주어진 값이 참인지 거짓인지 알려주는 함수이다. bool() 함수는 하나의 인수만 필요로 한다. 숫자 0, 빈리스트, 빈 문자열 등은 False, 그 외의 값은 True 이다.

 

 

 

Section 78. 내장 함수 - dir() 함수와 help() 함수

 

dir() 함수는 현재 사용할수 있는 것들을 보여주고, help() 함수는 구체적인 설명을 보여준다. dir(객체)는 객체가 사용할수 있는 기능들을 보여준다.

 

 

 

Section 79. 내장 함수 - eval() 함수

 

eval() 함수는 수식 형태의 문자열을 인수로 받아서 파이썬 수식으로 변환하고 실행한다. eval() 함수에는 파이썬 수식이 아닌 파이썬 문장을 넣으면 오류가 발생한다. input() 함수로 받은 값은 문자열이기 때문에 eval() 과 함께 사용하면 계산기와 같은 프로그램을 쉽게 만들수 있다.

 

 

 

Section 80. 내장 함수 - exec() 함수

 

exec() 함수는 문장을 받아 파이썬 코드로 변환하고 실행해주는 함수이다. 수식은 변수, 연산자, 함수 호출 등 최종값을 만들수 있는것을 말한다. 문장은 수식을 포함해 한줄을 구성할수 있는 모든 것을 말한다.

 

 

 

Section 81. 내장 함수 - compile() 함수

 

compile() 함수는 문자열을 미리 파이썬 코드로 변환해주는 함수이다. 미리 변환해 두기 때문에 실제 속도에서 빠르다. 변환만 해주기 때문에 실행하기 위해서는 eval() 과 exec() 함수와 함께 사용한다.

 

compile() 함수의 형태

 

compile (source, filename, mode)

여기서 source는 파이썬 코드 문자열이고, filename은 문자열이 저장된 파일명을 적은건데 파일로부터 읽어들인 문자열리 아니라면 을 적는다. 그리고 mode에는 세가지가 있다.

 

(1) -eval : 수식을 변환할때 선택하는 모드로 특징은 이 모드로 변환하면 반환값이 생긴다. 수식이란 최종값을 만들수 있다.

(2) -single : 단 한줄의 문장을 변환할때 선택하는 모드로 반환값이 없다.

(3) -exec : 여러 줄의 문장을 변환할때 선택하는 모드로 역시 반환값이 없다.

 

 

 

Section 82. 내장 함수 - float() 함수

 

float() 함수는 주어진 값을 실수로 변환해주는 함수이다. float() 함수에 넣는 값이 문자열일 경우 숫자로 구성된 문자열이어야 한다. float() 함수의 괄호에 값을 생략하면 실수 0.0 을 돌려준다.

 

 

 

Section 83. 내장 함수 - int() 함수

 

int() 함수는 주어진 값을 정수로 변한해주는 함수이다. int() 함수에 넣는 값이 문자열일 경우 정수로 구성된 문자열이어야 한다. int() 함수의 갈호에 값을 생략하면 정수 0 을 돌려준다.

 

 

 

Section 84. 내장 함수 - len() 함수 

 

len() 함수는 객체의 길이 또는 항목의 개수를 구해준다. len() 함수에 문자열을 넣으면 문자열의 길이를 알려준다. len() 함수에 시퀀스형 객체를 넣으면 항목의 개수를 알려준다. range() 와 함께 사용하면 시퀀스형 객체의 항목 개수를 일일이 셀 필요가 없어서 편리하다.

 

 

 

Section 85. 내장 함수 - pow() 함수, round() 함수, sum() 함수

 

pow() 함수는 지수승을 구해주는 함수이다. round() 함수는 반올림하여 가장 가까운 정수를 구해준다. sum() 함수는 항목들의 합을 구해주는 함수이다.

 

 

 

Section 86. 내장 함수 - max() 함수와 min() 함수 

 

max() 함수는 최대값, min() 함수는 최소값을 구해준다. 아스키 코드에는 숫자 < 영어대문자 < 영어소문자 순으로 크기가 정해져 있다. 문자열과 숫자는 크기 비교를 할수 없다. 

 

 

 

 

■ 모듈

 

모듈이란 다른 사람이 만든 좋은 기능의 함수나 코드 등을 모아놓은 것을 말한다. 내 프로그램에서 사용하기 위해 모듈을 가져다 쓸수도 있지만 내가 만든 유용한 코드를 공개하는 수단으로 사용할수도 있다. 내가 직접 모듈을 만들어서 임포트하는 방법과 파이썬에 내장된 모듈 몇가지를 공부한다.

 

☞ Chapter 5. 모듈

 

Section 87. 모듈 만들기

Section 88. __name__ 변수

Section 89. if __name__ == '__name__'

Section 90. 내장 모듈 연습 - keyword 모듈

Section 91. random 모듈 - 난수 만들기

Section 92. random 모듈 - 리스트를 섞고 무작위로 뽑기

Section 93. random 모듈 - 여러 항목을 한꺼번에 뽑기

Section 94. random 모듈 - 실수로 구성된 난수 만들기

Section 95. time 모듈 - 프로그램 실행 시간 측정하기

Section 96. time 모듈 - ctime() 함수로 년월일시분초 추출하기

Section 97. time 모듈 - 시간 딜레이 주기

Section 98. datetime 모듈 - 다른 방법으로 년월일시분초 추출하기

 

 

Section 87. 모듈 만들기

 

내가 만든 유용한 파이썬 파일을 모듈로 임포트하여 사용할수 있다. 내가 만든 파이썬 파일을 다른 파일에서 모듈로 사용할수 있다. 내가 직접 모듈을 만들어서 배포할수도 있다. 모듈을 불러오는 방법 중 첫번째 방법을 주로 사용한다. 재사용하고 싶은 함수나 변수를 하나의 파일 (*.py) 에 저장해 두고 이 파일을 다른 파일에서 임포트하면 된다. 모든 파이썬 파일은 모듈로 사용할수 있다. 그리고 모듈명은 .py 를 뺀 파일명과 같다.

 

 

 

Section 88. __name__ 변수

 

파이썬 파일이 모듈로 임포트 되는 순간 임포트 된 파일은 실행된다. 파이썬 파일은 모듈로 임포트 될때도 실행된다. 모듈이 실행될때 불필요한 출력이 생길수 있어서 이를 구분할 필요가 있다. 파이썬 파일이 직접 실행되었는지 혹은 모듈로 임포트 되어 실행된 것인지는 __name__ 변수를 통해 구별할수 있다.

 

 

 

Section 89. if __name__ == '__name__'

 

if문으로 __name__ 의 값을 구분하여 출력문을 분류해 둘수 있다. 파이썬 파일은 모듈로 임포트 될때도 실행된다. __name__ 변수의 값이 __main__ 이면 파일이 직접 실행된 것이고, __name__ 변수의 값이 모듈명이면 모듈로서 임포트되면서 실행된것이다. if문을 이용해서 모듈로 임포트 되었을때와 그렇지 않을 때를 구분할수 있다. 모듈로 사용할 파일 (apink2.py) 에 if문을 이용해서 __name__ 변수값이 __main__ 이라면 , 즉 파일이 직접 실행된거라면 출력문을 실행하도록 해서 파일 본연의 역할을 할수 있도록 하고, __name__ 변수값이 __main__ 이 아니라면 모듈로서 사용되었다는 의미니까 불필요한 출력문을 실행하지 않게 한다.

 

 

 

Section 90. 내장 모듈 연습 - keyword 모듈

 

keyword 모듈은 파이썬 예약어 관련 기능들을 제공한다. 내가 만들려는 기능이 구현된 모듈이 이미 있다면 모듈을 적극 활용하자. 모듈으 활용하면 개발 시간을 절약할수 있고 스트레스도 줄일수 있다. keyword 모듈은 파이썬의 예약어에 관련된 함수와 변수들을 가지고 있다.

 

 

 

Section 91. random 모듈 - 난수 만들기

 

random.randint() 함수로 임의의 난수를 얻을수 있다. 난수는 게임 프로그래밍과 로또 번호 생성기 등에 많이 사용하는 개념이다. 마치 로또 숫자 생성기처럼 난수를 만들려면 random 모듈을 임포트 한다. random.randint (시작값, 끝값)은 시작값과 끝값 사이에서 임의의 수를 추출해 준다. print() 함수의 end 속성은 출력후 한줄의 마지막을 어떻게 처리할것인지를 지정해주는 역할을 한다. print() 함수의 end 속성은 화면 출력후 마지막을 어떻게 처리할지를 정해준다. end 속성을 생략하면 기본값이 줄바꿈을 의미하는 'n' 이 적용되어 줄바꿈이 발생한다. 결국 end='n' 과 같다. end=' ' 는 내용출력후 줄바꿈 대신 공백을 넣고, end='/' 는 내용출력후 '/' 넣는다.

 

# end=' ' 일때 : 6 32 45 42 45 27

# end='/' 일때 : 6/32/45/42/45/27

 

 

 

Section 92. random 모듈 - 리스트를 섞고 무작위로 뽑기

 

shuffle() 은 무작위로 섞고, choice() 는 무작위로 뽑아주는 함수이다. 리스트에 random.shuffle() 을 이용하면 리스트의 값을 무작위로 섞을수 있다. random.choice() 함수는 무작위로 하나를 선택해주는 함수이다. 

 

 

 

Section 93. random 모듈 - 여러 항목을 한꺼번에 뽑기

 

sample() 함수는 여러항목을 중복되지 않게 뽑아 준다. random.sample() 의 첫번째 인수는 시퀀스형 객체 또는 집합이고 두번째 인수는 추출하고 싶은 개수이다. random.sample() 함수는 주어진 개수만큼 무작위로 뽑아주는 기능을 가진다. ramdom.sample() 함수는 중복되지 않은 값을 뽑아준다.

 

 

 

Section 94. random 모듈 - 실수로 구성된 난수 만들기

 

random() 함수 또는 uniform() 함수로 실수 난수를 구할수 있다. random.random() 함수는 0.0 ~ 1.0 사이의 실수를 무작위로 추출해 준다. random.uniform() 함수는 주어진 값의 범위에서 실수를 임의로 추출해 준다. random 모듈에는 다양한 난수 함수가 제공되는데 이중 자주 사용하는 함수를 정리해 보자.

 

 

 

Section 95. time 모듈 - 프로그램 실행 시간 측정하기

 

time.time() 으로 현재 시간을 초단위로 알수 있다. time.time() 함수는 현재 시간을 1970년 이후부터 지금까지의 초 단위로 알려준다. time.time() 함수를 이용하면 프로그램의 실행 시간을 알아낼수 있다.

 

 

 

Section 96. time 모듈 - ctime() 함수로 년월일시분초 추출하기

 

time.ctime() 함수는 현재시간을 문자열로 알려준다. time.ctime() 함술 얻은 시간 정보를 문자열 함수를 이용해 분리해서 사용할수 있다. 현재시각 항목들이 공백으로 구분되어 split(' ') 함수로 분리해 리스트로 반환하고, 리스트 각 항목은 for 문으로 출력한다.

 

 

 

Section 97. time 모듈 - 시간 딜레이 주기

 

time.sleep() 함수는 프로그램을 잠시 쉬게 만드는 함수이다. time.sleep() 함수는 주로 반복문 안에서 사용되고, 초를 실수 값으로 입력할수도 있다.

 

 

 

Section 98. datetime 모듈 - 다른 방법으로 년월일시분초 추출하기

 

datetime 모듈에도 현재 시간을 구하는 방법이 있다. datetime.datetime.now() 를 이용해서 현재 시간을 구할수 있다. 이때 얻은 값에서 year, month, day 와 같은 방법으로 값을 사용할수 있다. weekday() 로 얻는 값은 0 ~ 6 이며 0 은 월요일, 6은 일요일이다.

 

 

 

■ 파일 입출력

 

프로그램에 데이터를 입력할때 input() 함수를, 출력할때는 print() 함수를 주로 사용해 왔다. 이 함수들은 파이썬 쉘을 통해서 키보드로 데이터를 입력하고 출력하는 방법으로 이런 방법을 표준 입출력방식이라 한다. 파일을 이용해서 프로그램에 데이터를 입력하고 출력하는 방법을 공부한다. 이것을 파일 입출력이라 하는데 파일 입출력의 장접은 대량의 데이터를 다루는데 매우 효과적이다. 예로 학교 전교생의 데이터가 텍스트 파일로 저장되어 있는데 이것을 input() 함수로 입력한다면 모든 학생들의 데이터를 키보드로 일일이 입력하기에 파일 입출력을 이용하면 간단하게 처리할수 있다.

 

☞ Chapter 6. 파일 입출력

 

Section 99. 파일 입출력의 개요

Section 100. 파일을 열고 데이터 쓰기 - write()

Section 101. 파일을 열고 데이터 읽기 - readline()

Section 102. 파일을 열고 데이터 읽기 - readlines()

Section 103. 파일을 열고 데이터 읽기 - read()

Section 104. 파일을 열고 데이터 읽기 (파일 객체 변수 사용)

Section 105. 파일을 열고 데이터 읽기 (with 문 사용)

Section 106. 파일에 데이터 추가하기

 

 

Section 99. 파일 입출력의 개요

 

open() 함수를 'w' 모드로 사용하면 파일을 새로 만들수 있다. 파일 입출력은 파일열기 -파일처리 - 파일닫기의 3단계로 이루어진다. open() 함수의 세가지 파일 열기 모드중 'w' 모드는 빈 파일을 만든때 사용한다. 'w' 모드로 파일을 생성할때 폴더 내에 동일한 파일이 존재할 경우 기존 데이터가 삭제된다. 

 

파일 입출력 전체적인 개요

 

1단계 : 파일열기. open() 함수. 파일객체변수 = open ('파일명', '파일_열기_모드')

2단계 : 파일처리. write(), readline(), readlines(), read()

3단계 : 파일닫기. close()

 

파일 열기 모드

 

w : 쓰기모드. 파일에 데이터를 저장하고 싶을때 사용함. 

r : 읽기모드. 파일에서 데이터를 가져올때 사용함.

a : 추가모드. ㅍ일에 데이터를 추가하고 싶을때 사용함.

 

 

 

Section 100. 파일을 열고 데이터 쓰기 - write()

 

write() 함수는 파일에 데이터를 저장하는 기능을 가진 함수이다. 파일 입출력의 3단계 (파일열기-파일처리-파일닫기)를 기억하자. 절대 경로와 상대경로의 차이를 이해하자. write() 함수는 파일에 데이터를 저장하는 함수이다.

 

 

 

Section 101. 파일을 열고 데이터 읽기 - readline()

 

readline() 함수는 파일의 데이터를 한줄씩 읽어오는 기능을 가지고 있다. 파일의 데이터를 읽기 위해서는 반드시 'r' 모드로 파일을 열어야 한다. 파일의 끝 (EOF)에 다다르면 readline() 함수는 None을 반환한다.

 

 

 

Section 102. 파일을 열고 데이터 읽기 - readlines()

 

readlines() 함수는 파일전체를 줄단위로 읽어서 리스트로 반환해준다. readlines() 함수는 파일의 모든 내용을 한꺼번에 가져온다. readlines() 함수는 파일 내용을 줄 단위로 끊어서 리스트 항목으로 만들어서 돌려준다. 파일의 용량이 매우 클 경우 처리시간이 오래 걸릴수 있다.

 

 

Section 103. 파일을 열고 데이터

 읽기 - read()

 

read() 함수는 파일 내용 전체를 문자열로 반환해 준다. read() 함수는 파일의 모든 내용을 한꺼번에 가져온다. read() 함수는 파일 내용 전체를 문자열로 반환한다. 파일의 용량이 매우 클 경우 처리 시간이 오래 걸릴수 있다. 

 

 

 

Section 104. 파일을 열고 데이터 읽기 (파일 객체 변수 사용)

 

파일객체변수는 파일데이터를 줄단위로 가지고 있다. 파일객체변수를 이용해서 직접 출력할수 있다. 파일 객체변수에는 파일 내용이 줄 단위로 저장되어 있다. 파일객체변수를 이용하면 코드가 간결해지고 속도도 빠른 편이다.

 

 

 

Section 105. 파일을 열고 데이터 읽기 (with 문 사용)

 

with문을 사용하면 안정적인 파일처리를 할수 있다. with() 문을 이용하면 close() 함수를 사용하지 않아도 파이썬이 자동으로 파일을 닫아준다. with() 문을 이용한 파일처리가 예외처리 (try-except) 보다 더 안전하다. 파일 객체변수를 이용해서 read(), readline() 등 다른함수들을 사용할수 있다.

 

 

 

Section 106. 파일에 데이터 추가하기

 

파일 열기 모드 중 'a' 모드는 파일의 맨끝에 데이터를 추가할때 선택한다. 새롭게 추가하는 데이터는 기존 파일 데이터이 맨끝에 추가딘다. 파일에 데이터를 저장할때는 write() 함수를 사용한다.

 

 

 

■ 객체 지향 프로그래밍

 

지금까지 배운 내용으로도 웬만한 프로그램을 만들수 있다. 그런데 객체 지향 프로그램을 배워야 하는 이유는 현재 대세이기도 하고 무엇보다 여러 사람이 모여 큰 프로그램을 작성하기 위해 코딩할때 객체 지향 프로그래밍이 효율적이기 때문이다. 객체 지향이 무슨 뜻인지 공부한다.

 

☞ Chapter 7. 객체 지향 프로그래밍

 

Section 107. 객체 (object)

Section 108. 클래스 (class)

Section 109. 파이썬은 객체로 구성된다

Section 110. 가장 간단한 클래스

Section 111. __init__()

Section 112. __init__() 에 매개 변수 추가하기

Section 113. 메서드

Section 114. __str__() 메서드

Section 115. 클래스 변수와 인스턴스 변수

Section 116. 데이터 숨기기

Section 117. 상속

Section 118. 상속 - super()

Section 119. 상속 - 오버라이딩

Section 120. 포함 관계

 

 

Section 107. 객체 (object)

 

큰 프로그램을 작성하기 위해 코딩할때 객체지향 프로그래밍이 효율적이다. 객체지향 프로그래밍의 객체는 우리가 보고 생각할수 있는 모든 것을 말한다. 현실의 객체를 구현하기 위해서 우선 특성과 기능으로 분석한다. 객체의 특성은 변수(속성)로, 기능은 함수(메서드)로 구현한다. 객체지향프로그래밍 (Object Oriented Programming) 은 객체의 특성과 기능을 분석하여 현실에 존재하는 모든 객체인 강아지, 자동차 등 을 디지털 세계의 객체로 구현한다. 

 

객체

 

특징 : 현실객체의 고정적인 요소들이나 상태. 예로 색, 크기, 온도, 키, 몸무게 등을 말한다.

기능 : 현실객체의 움직밍과 관련된 것들. 예로 걷다, 뛰다, 날다, 먹다, 잠자다, 회전하다 등을 말한다.

 

현실객체와 디지털객체

 

현실객체 특성 -> 디지털객체 변수(속성) 로 표현

현실객체 기능 -> 디지털객체 함수(메서드) 로 표현

 

로봇이라는 객체를 코드로 구현

 

로봇의 특성 : 제조사, 제조번호, 모델명, 이름, 몸무게 등 -> 변수를 속성(attribute) 으로 표현

로봇의 기능 : 이동하다, 충전하다 등 -> 함수를 메서드(methode) 로 표현

 

 

 

Section 108. 클래스 (class)

 

클래스는 객체의 원형이다. 객체를 만들기 위해서는 클래스를 구현해야 한다. 하나의 클래스로 무수히 많은 객체를 만들어 낼수 있다. 객체 지향 프로그래밍은 객체와 객체가 메시지를 주고 받으며 상호 작용하면서 작동하도록 코딩하는 것을 말한다. 

 

(1) 객체 분석

 

고양이 -> 특성 : 네발, 뾰족한 귀, 긴 꼬리,  

   기능 : 걷다, 뛰다, 울다.

 

(2) 클래스 정의

 

class 클래스명 :  #클래스 헤더

명령어1  # 클래스 블록

명령어2  # 클래스 블록

 

 

고양이 -> class Cat:

foot = 4

ear = 'sharp'

tail = 15

def walk (self):

pass

def run (self):

pass

 

(3) 객체 생성

 

클래스를 구현하면 객체를 만든다. 객체와 객체간 서로 메시지를 주고받으면 프록램이 작동한다. 예로 아이 객체가 '말하다' 메서드를 이용해 강아지 객체에게 "접시를 물어와" 라는 메시지를 보내면 강아지 객체는 '듣다' 라는 메서드를 이용해 메시지를 받는다. 이렇게 메시지를 통해 객체와 객체가 상호작용하며 프로그램이 운영되도록 코딩하는것을 객체지향 프로그래밍이라 한다. 그러나 객체 지향프로그래밍 언어라야 가능한 작업이다.

 

 

 

Section 109. 파이썬은 객체로 구성된다

 

파이썬은 모든 요소가 객체이다. 는 'int 객체' 라는 의미이다. 새로운 클래스를 정의하면 새로운 자료형이 생긴 것과 같다. 정수형 변수는 '변수 = 클래스명()' 처럼 객체를 생성하는 방법으로도 만들수 있다. 파이썬이 기본으로 제공해주는 자료형이라는 것들은 사실 파이썬 설계자가 미리 만들어 놓은 클래스다. 따라서 만약 내가 만들려는 프로그램에 새로운 자료형이 필요하면 클래스를 이용해 만들수 있다. 예로 화학계산프로그램을 만들때, 단위가 원자면 파이썬에는 '원자'라는 자료형을 제공않는다. 이럴때 Atom 클래스를 직접 만들면 되는데 아래와 같이 Atom 형 변수들을 사용하면 된다

 

atom1 = Atom()

atom2 = Atom()

atom3 = Atom()

 

기본자료형 정수형 변수를 마음대로 만들듯 Atom 형 변수도 마음대로 만들어 사용할수 있다. 클래스로 인해서 개발자들은 자료형을 새롭게 만들수 있어 프로그램을 더 쉽고 편리하게 만들수 있다. 변수에 리스트를 연결하고 출력결과에 변수의 타입을 확인하면 'list' 객체임을 알수 있다. 함수는 function 객체이고, 모듈은 module 객체로 파이썬의 몯ㄴ 요소는 객체로 구성되어 있다.

 

 

 

Section 110. 가장 간단한 클래스

 

클래스를 구성하는 변수를 속성 (attribute) 이라고 한다. 객체의 속성을 추가할때는 점(.) 으로 연결한다. 클래스로부터 만들어진 객체들은 독립적인 개체들이다. 객체지향 프로그램에서 속성이란 변수다. 객체가 가진 속성 값들은 '객체.속성명' 과 같은 방식으로 접근할수 있다. 속성에 저장된 값을 사용할수 있다. Robot 클래스로 만든 인스턴스 robot1, robot2 는 독립된 개체이다. 

 

 

 

Section 111. __init__()

 

생성자를 이용하면 객체가 생성될때부터 값을 가지도록 할수 있다. def __init__(): 은 객체 생성시 변수를 초기화하는 목적으로 사용된다. __init__() 은 객체 생성시 가장 먼저 자동으로 실행되는 특별한 메서드이다. __init__() 은 기본 매개변수를 가지며 관례적으로 self 를 사용한다. 객체의 속성을 추가하는 보다 좋은 방법은 __init__() 메서드를 사용하는 방법이다. 객체를 생성랄때마다 맨 처음 실행되기 때문에 생성자 (Constructor) 라고 부르기도 한다. 객체를 만들때 맨 처음 실행되기에 변수에 처음 값을 설정하는 용도로 많이 사용한다. 

 

 

 

Section 112. __init__() 에 매개 변수 추가하기

 

생성자 __init__() 에 매개 변수를 추가하여 객체마다 특별한 값을 설정할수 있다. 객체를 생성할때 self 를 제외한 매개 변수의 개수만큼 값을 입력해 줘야 한다. 객체 생성시 입력한 값들은 객체 고유의 값이 된다. __init__() 메서드에 매개변수를 추가하면 객체마다 특별한 값을 설정할수 있다.

 

 

 

Section 113. 메서드

 

메서드는 클래스의 기능을 구현하는 부분이다. 메서드를 이용해서 객체의 속성값을 변경하거나 데이터를 처리한다. 메서드를 사용할때는 점(.) 을 이용해 '객체.메서드명()' 과 같이 사용한다.

 

예제 프로그램

 

Robot 클래스 (Robot) : maker, isWalking, name, build_year, xpos, ypos, move(), curPosition()

Robot 객체 (hubo) : maker, isWalking, name, build_year, xpos, ypos, move(), curPosition()

 

 

 

Section 114. __str__() 메서드

 

__str__() 은 객체를 대표하는 문자열을 출력하기 위한 메서드이다. __str__() 은 return 문을 사용해야 한다. __str__() 은 디버깅에 활용하면 좋다. 

 

 

 

Section 115. 클래스 변수와 인스턴스 변수

 

클래스 변수는 모든 객체가 공유하는 변수이다. 클래스 변수는 클래스의 메서드 밖에서 만들어진 변수이다. 클래스 변수는 클래스의 모든 인스턴스들이 공유하는 변수이다. 클래스 변수를 사용할때는 '클래스명.클래스 변수' 처럼 사용한다. self. 가 붙은 변수들은 인스턴스 변수들로 모든 객체들이 독립적으로 소유하게 된다. 클래스변소는 '클래스명.클래스변수명' 처럼 사용한다.

 

 

 

Section 116. 데이터 숨기기

 

파이썬은 네임 맹글링 방법으로 변수의 사용을 제한할수 있다. 변수명/함수명 앞에 '__' 가 붙은 변수는 사용하지 말자. 변수명/함수명 앞에 '_'가 붙은 변수도 사용하지 말자. '__'가 앞에 붙은 멤버명은 네임 맹글링이 적용된다. 

 

프라이빗 멤버는 다음과 같이 이 간단히 만든다.

 

(1) 두개의 밑줄(__) 을 변수명/함수명 앞에 붙인다 : __name

(2) 변수명/함수명 뒤에는 밑줄(_)을 하나까지만 붙일수 있다 : __name_

 

 

 

Section 117. 상속

 

상속은 자식 클래스가 부모 클래스의 멤버들을 물려 받는것을 말한다. 상속 관계가 생기면 자식 클래스는 부모의 속성과 메서드를 그대로 물려 받는다. 상속 관계를 사용하면 코드를 재 사용할수 있고 유지 보수가 편리하다. 

 

(1) 구현하려는 로봇 종류

 

로봇 : 말하기 이동하기 충전하기

청소로봇 : 말하기 이동하기 충전하기 + 먼지쓸기

물청소로봇 : 말하기 이동하기 충전하기 + 먼지쓸기 + 물뿌리기

간호로봇 : 말하기 이동하기 충전하기 + 간호하기

교육로봇 : 말하기 이동하기 충전하기 + 설명하기

 

(2) 로봇사이의 상속관계

 

로봇 : 말하기 이동하기 충전하기 <- 청소로봇 : 먼지쓸기  <- 물뿌리기

 간호로봇 : 간호하기

 교육로봇 : 설명하기

 

(3) 상속 관계 코드

 

class Parent :

# 속성

# 메서드

 

class Child (Parent):

# 비어있는 클래스라 해도 부모의 것을 모두 갖게 된다.

# 단, 프라이빗 멤버는 상속되지 않는다.

 

(4) 모든 클래스의 시조 object 클래스

 

class A :

pass

 

class A(object) :

pass

 

파이썬에서 클래스를 정의할때 상속할 부모를 명시하지 않은 클래스는 암묵적으로 object 클래스를 상속받는다. 두 코드는 완전히 동일한 코드다. 따라서 이 클래스를 상속받은 자식 클래스들은 모두 object 클래스의 자손 클래스가 된다. 파이썬의 object 클래스는 최상위 클래스로서 모든 클래스의 시조다.

 

 

 

Section 118. 상속 - super()

 

자식 클래스에서 super() 는 부모 클래스를 의미한다. super() 는 부모클래스를 의미하는 내장 함수다. super() 는 자식 클래스에서 사용할수 있다. super() 를 사용하면 코드를 줄일수 있다. 

 

 

 

Section 119. 상속 - 오버라이딩

 

오버라이딩은 부모 클래스로부터 물려받은 메서드를 재정의하는 것이다. 자식 클래스 입장에서는 부모의 메서드를 그냥 써도 되고, 오버라이딩해서 써도 된다. 다형성은 같은 이름의 메서드가 다른 형태로 동작하는 것을 말하며, 오버라이딩과 관련이 있다.

 

 

 

Section 120. 포함 관계

 

한 클래스가 다른 클래스의 멤버로 포함되는 관계를 포함 관계라고 한다. 클래스와 클래스의 관계를 설정하는 방법에는 상속관계와 포함관계가 있다. 포함관계는 한 클래스가 다른 클래스의 멤버로 포함되는 것을 말한다. 포함관계로 설정했을때 변수나 메서드를 사용하는 방법을 알아두자. 예로 로봇은 모터를 가지고 있으니 로봇 클래스가 모터 클래스를 포함하도록 설정하는것이 좋다. 클래스간 관계는 두가지로 상속관계를 IS-A 관계, 포함관계를 HAS-A 관계로 부른다. 관계는 프로그래머가 상식선에서 결정한다. 

 

상속(IS-A) 관계 : 청소로봇은 로봇이다 (청소로봇 IS A 로봇), 버스는 자동차이다 (버스 IS A 자동차)

포함(HA-A) 관계 : 로봇은 모터를 가진다 (로봇 HAS A 모터), 사각형은 점을 가진다 (사각형 HAS A 점)

 

 

 

■ 예외 처리

 

예외란 실행 중에 발생하는 오류를 말한다. 실행 중 프로그램이 갑자기 멈추면 이런 문제를 해결하려는 것이 예외 처리다. 어려운 내용이지만 예외 처리를 공부한다.

 

☞ Chapter 8. 예외 처리

 

Section 121. 예외 처리의 기본

Section 122. 예상되는 오류가 여러 개일 때

Section 123. as 문

Section 124. finally 문

Section 125. raise 문

Section 126. 사용자 정의 예외

 

 

Section 121. 예외 처리의 기본

 

예외 처리란 프로그램을 정지시킬수 있는 오류를 예방하기 위한 처리이다. 예외란 프로그램 실행중 발생할수 있는 오류를 말한다. 예외처리란 프로그램 실행중에 발생한 오류때문에 프로그램이 정지되는 것을 막기위한 방법을 말한다. try 블록에 오류가 생길수 있는 코드를 넣고, 해당 오류를 처리하기 위한 except 문을 구성한다.

 

 

 

Section 122. 예상되는 오류가 여러 개일 때

 

예외가 여러개 예상될때는 해당 오류에 대한 except 문을 추가한다. except 문에 오류명을 생략하면 모든 종류의 오류를 받을수 있다. except 문 옆에 두개 이상의 오류를 나열할수 있다.

 

 

 

Section 123. as 문

 

as 문을 이용하면 파이썬이 제공해주는 예외 정보를 얻을수 있다. as <변수명> 일때, '변수' 대신 '변수.args' 를 이용할수도 있다. args 는 튜플의 형태기 때문에 인덱싱으로 일부분만 가져올수 있다.

 

발생한 예외정보 확인 except 문 : except <오류 종류> as <변수명>

 

 

 

Section 124. finally 문

 

try 문이 실행된 이후 무조건 실행해야 하는 코드는 finally 문에 넣는다. 따라서 예외의 발생과 무관하게 무조건 실행해야 하는 코드를 넣는데 적합하다. finally 문이 있을때는 except 문을 생략할수 있다.

 

 

 

Section 125. raise 문

 

raise 문은 개발자가 의도적으로 예외를 발생시킬때 사용한다. raise 문을 이용하면서 에러정보를 개발자가 작성할수도 있다. 개발자가 작성한 에러정보는 as 문을 이용하여 얻을수 있다.

 

 

 

Section 126. 사용자 정의 예외

 

파이썬은 사용자가 직접 예외를 만들어 쓸수 있는 방법을 제공한다. 파이썬은 내장 예외 외에 사용자 정의 예외도 제공한다. 사용자 정의 예외는 사용자가 예외를 직접 만들어서 사용하는 것이다. 사용자 정의 예외는 Exception 또는 그 하위 클래스를 상속 받아야 한다.

 

 

 

■ 파이썬으로 만들어보는 재미있는 프로그램들

 

1. 문자열에서 전화번호 찾기

2. 카카오톡 대화 파일에서 단어 수 분석하기

3. 파일명 일괄 변경하기

4. 숫자 맞추기 게임

5. 그래픽 게임 만들기 - 소행성 피하기

6. 그래프 그리기

 

☞ Chapter 9. 파이썬으로 만들어보는 재미있는 프로그램들

 

Project 1. 문자열에서 전화번호 찾기

Project 2. 카카오톡 대화 파일에서 단어 수 분석하기

Project 3. 파일명 일괄 변경하기

Project 4. 숫자 맞추기 게임

Project 5-1. 그래픽 게임 만들기 : 소행성 피하기

Project 5-2. 소행성 피하기 : pygame

Project 5-3. 소행성 피하기 : 1. 빈 게임 화면 열고 닫기

Project 5-4. 소행성 피하기 : 2. 게임 속도 조절하기

Project 5-5. 소행성 피하기 : 3. 그림과 효과음 삽입하기

Project 5-6. 소행성 피하기 : 4. 게임 요소 이동시키기

Project 5-7. 소행성 피하기 : 5. 충돌 감지와 점수 출력하기 (전체 소스 코드)

Project 6-1. 그래프 그리기 : 1. 그래프 그리기 준비 및 간단한 그래프 그리기

Project 6-2. 그래프 그리기 : 2. 그래프에 필요한 표식 설정하기

Project 6-3. 그래프 그리기 : 3. 일차함수 그리기

Project 6-4. 그래프 그리기 : 4. 이차함수 그리기

 
 

Project 1. 문자열에서 전화번호 찾기

 

함수, for 문, if 문, len() 함수, 문자열 인덱싱, 문자열의 isdecimal() 메서드, 다중문자열 (''' ~ '''), 문자열 관련 함수들을 활용하여 특정한 형식의 문자열을 추출할수 있다. 문자열의 isdecimal() 함수는 문자열 타입의 숫자인지를 판단해주는 함수이다. isPhoneNumber() 함수처럼 특정한 목적을 가진 함수를 자유롭게 만들어 활용할수 있다.

 

 

 

Project 2. 카카오톡 대화 파일에서 단어 수 분석하기

 

collections 모듈, for 문, if 문 파일 입출력, 문자열의 strip() 함수, split() 함수. 데이터를 분석하기 위해서는 데이터의 패턴을 먼저 파악해야 한다. Counter 클래스의 most_common() 메서드는 가장 출현 빈도가 높은 값을 기준으로 정렬해 준다.

 

 

 

 

 

 

 

Project 3. 파일명 일괄 변경하기

 

os 모듈 (os.listdir(), os.rename()), 문자열슬라이싱 (lower(), startswiith(), continue, break. 내장모듈인os 모듈의os.listdir() 을이용해서폴더에 있는파일과 하위폴더 정보를 읽울수 있고, os, rename()을 이용해서 파일을 수정할수 있다. os 모듈을 이용해 가져온 파일 정보는 문자열형이기 때문에 문자열 슬라이싱을 이용해 파일의 일부를 자르고 조합할수 있다. input() 함수로 입력받은 문자열을 lower(), startswith() 등을 이용해서 변환하면 사용자로부터 받을수 있는 다양한 형태로 다룰수 있는 장점이 있다.

 

 

 

Project 4. 숫자 맞추기 게임

 

모듈 / random.randint () 함수 / while 문, if 문, 복합 연산자 += / int(), str() , 형 변환 함수. 게임 프로그래밍에서 난수는 꼭 사용되며 random 내장 모듈에서 다양한 난수 함수를 제공한다. 게임이 실질적으로 이루어지는 부분은 while 반복문 내부이다. 숫자를 문자열과 함께 출력하기 위해 str() 함수를 이용할수 있다.

 

 

 

 

 

 

 

Project 5-1. 그래픽 게임 만들기 : 소행성 피하기

 

 

Project 5-2. 소행성 피하기 : pygame

 

pygame 모듈은 파이썬으로 게임을 만드는데 도움을 주는 모듈이다. 대부분의 게임은 <사용자입력>-<게임상태변경>-<화면업데이트> 과정을 무한히 반복하는 구조를 가지고 있다. while 블록이 무한정 실행되면서 게임이 진행되며, 게임 종료 조건에 따라 while 문을 빠져나오면 게임이 종료된다.

 

pygame 설치 : https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame

 

 

 

 

 

 

 

 

 

 

Project 5-3. 소행성 피하기 : 1. 빈 게임 화면 열고 닫기

 

 

 

 

 

 

Project 5-4. 소행성 피하기 : 2. 게임 속도 조절하기

 

무한 루프인 while 문이 1초에 실행되는 횟수를 조절할수 있다. Clock() 은 게임내에서 시간을 체크하는 기능을 제공한다. tick() 에 입력된 프레임수를 조정하면 게임속도를 조절할수 있다.

 

 

 

 

Project 5-5. 소행성 피하기 : 3. 그림과 효과음 삽입하기

 

그림 파일을 게임화면에 넣을때 pygame.image.load ('그림파일경로') 를 사용한다. 그림파일을 화면에 그릴때는 screen.blit (그림변수, 그릴위치좌표튜플) 을 사용한 다음 꼭 flip () 을 통해 화면을 업데이트해야 반영된다. 소리 파일은 pygame.mixer.Sound ('소리파일경로') 로 삽입하고 play () 를 이용해 실행한다.

 

 

 

 

 

 

 

Project 5-6. 소행성 피하기 : 4. 게임 요소 이동시키기

 

캐릭터를 그리기 위해서는 가장 먼저 캐릭터의 위치 좌표를 정한후 blit () 을 이용해 게임 화면에 그린다. 캐릭터가 움직이도록 만들려면 위치 좌표를 변수로 만들어서 변수의 값을 지속적으로 변화시키면 된다. 여러 소행성의 위치 좌표를 처리하기 위해 리스트의 append () 와 pop () 을 사용한다. 

 

 

 

 

 

 

 

Project 5-7. 소행성 피하기 : 5. 충돌 감지와 점수 출력하기 (전체 소스 코드)

 

두 객체의 충돌을 감지하려면 Rect () 클래스를 이용해 객체를 만들어야 한다. 게임 요소의 위치와 사각형 객체의 위치를 동일하게 유지하도록 한다. 두 객체의 충돌은 사각형 객체의 colliderect () 메서드를 이용한다.

 

 

 

 

 

 

 

 

 

Project 6-1. 그래프 그리기 : 1. 그래프 그리기 준비 및 간단한 그래프 그리기

Project 6-2. 그래프 그리기 : 2. 그래프에 필요한 표식 설정하기

Project 6-3. 그래프 그리기 : 3. 일차함수 그리기

Project 6-4. 그래프 그리기 : 4. 이차함수 그리기

 
 
■ 파이썬 부록
 
문자열리스트 (list), 튜플 (tuple), 집합 (set), 사전 (dict) 관련 메서드, 터틀 (turtle) 모듈에서 사용되는 컬러 상수, 예외의 종류, 파이게임 (Pygame), 아나콘다 (Anaconda) 설치, 파이참 (PyCharm) 설치를 공부한다.
 

☞ 파이썬 부록

 

1. 문자열 관련 메서드
2. 리스트 (list) 관련 메서드
3. 튜플 (tuple) 관련 메서드
4. 집합 (set) 관련 메서드
5. 사전 (dict) 관련 메서드
6. 터틀 (turtle) 모듈에서 사용되는 컬러 상수
7. 예외의 종류
8. 파이게임 (Pygame) 설치
9. 아나콘다 (Anaconda) 설치
10. 파이참 (PyCharm) 설치