기초 PYTHON 강좌

Download Report

Transcript 기초 PYTHON 강좌

기초 PYTHON 강좌
KAIST 12학번 엄인배(invade)
2013년 4월
목차
0. 객체 지향 프로그래밍
1. PYTHON?
2. 조건문, 반복문
3. 자료형
4. 튜플, 리스트
5. 함수
6. 클래스, 상속
0. 객체지향프로그래밍
 객체
지향 프로그래밍은 컴퓨터 프로그램을 명령어
의 목록으로 보는 시각에서 벗어나 여러 개의 독립
된 단위, 즉 "객체"들의 모임으로 파악하고자 하는
것
 각각의
객체는 메시지를 주고받고, 데이터를 처리
할 수 있음
 프로그램을
유연하고 변경이 용이하게함 -> 대규모
소프트웨어 개발에 많이 사용
0. 객체지향프로그래밍
1. PYTHON?
 간결하고
우아한 문법
 방대한 라이브러리
 객체지향 모델
 빠르고 안정적
 다양한 웹 서버 지원
 다양한 데이터베이스 지원
 Free Software
 “빠르게 짜고, 빠르게 확인하고, 빠르게 고친
다.”
1. PYTHON? – 간결한 코드
C
언어
#include <stdio.h>
void main()
{
int i;
int X[] = {1,2,3};
X[1] = 1000;
for(i=0; i<3; i++)
{
printf(“%d”, X[i]);
}
}
1 1000 3
1. PYTHON? – 간결한 코드
 PYTHON
X = [1,2,3]
X[1] = 1000
print X
[1,1000,3]
간단한 코드
{}사용 x -> 들여쓰기 필수적
1. PYTHON? – for Django
 Django
Web Framework
 웹 어플리케이션 개발
 Django는 Framework, Language가 아님
 내부적으로 Python 사용
1. PYTHON? – 실행!
putty 실행
newbie.sparcs.org 접속
id -> 자기 id
비밀번호 -> 자기 이름 (ex)djadlsqo)
1. PYTHON? – 실행!
help() !
2. 자료형
정수
int
문자
char
문자열
string
참/거짓
bool
2. 자료형
변수 선언 전에 자료형을 먼저 명시할 필요 없음
2. 자료형 - type casting

int -> float

string -> list, tuple
2. 자료형 - type casting
 boolean값으로의
 int
str
type casting?
list, tuple
2. 자료형 - String
 string의
여러 메서드 -> help(string)
- 문자열 양끝제거. charset 지정되어 있으면
chars의 모든 조합을 제거
 strip
 lstrip,
rstrip
2. 자료형 - String
- 문자열 분리, 지정해준 char같은 것이 있으
면 그것에 따라 분리
 split
 확장자와
파일명 분리 등 많이 쓰임
2. 자료형 - String
 join
- split의 역과정
2. 자료형
Sequential
Data Type
 Dictionary - Data를 index가 아닌 key로
연결
 Tuple
 List
2. 조건문
 if,
elif, else 문
if n>0 :
print(“n은 양수”)
elif n<0 : #불필요한 확인을 막을 수 있음
print(“n은 음수”)
else :
print(“n은 양수, 음수가 아닌 수”)
3. 조건문
 연산자
JAVA
Python
and -> &&
or -> ||
not -> !
and -> and
or -> or
not -> not
vs
파이썬은 그대로...
3. 반복문

for 문
for <타겟> in <객체> :
…
for i in range(1,11) :
print (i)
보통 for i in range(?) 등으로 많이 사용
range(start,end) – start이상, end미만의 수를 리스트로 반환
3. 반복문 - 예제
 예제
 hint
* 피라미드를 만들어보기
: 파이썬에서 "a"*3 = "aaa"
4. 튜플, 리스트
Sequential Data Type
[0, 1, 2, 3, 4] – List
(0, 1, 2, 3, 4) – Tuple
뭐가 다른 거지?
4. 튜플, 리스트
List
>>> a = [1,2,3]
>>> a[0] + a[1] + a[2]
>>> a[1] = 5
>>> a
4. 튜플, 리스트
Tuple
>>> b = (1,2,3)
>>> b[0] + b[1] + b[2]
>>> b[1] = 5
>>> b
immutable!
4. 튜플, 리스트

튜플 내부의 리스트?

immutable이지만 원소 자체를 바꾸는 것이 아니라 리스트
등을 편집하는 거라면 변형 가능
4. 튜플, 리스트


리스트형 – 내부의 값을 나중에 바꿀 수 있다.
튜플형 – 한 번 값을 정하면 내부의 값을 바꿀 수 없다.
From 위키
List -> mutable
Tuple -> immutable,
List처럼 특별한 메서드를 가지고 있지 않음
(help(list), help(tuple))
4. 튜플, 리스트

리스트 사용 for 문 예시
for student in school :
if student.height > 180 :
print ("%s is WINNER!" % student.name)
4. 튜플, 리스트 - 인덱스
4. 튜플, 리스트 - 인덱스

튜플은 immutable이라 인덱스 접근으로 원소를 바꿀 수 없
음
해결방법?
4. 튜플, 리스트 - 인덱스

a[n1:n2] : 인덱스n1이상 n2미만으로 리스트, 튜플 등을 자
름
4. 튜플, 리스트 - 인덱스

a[n1:n2] : 인덱스n1이상 n2미만으로 리스트, 튜플 등을 자
름
4. 튜플, 리스트 - 인덱스

3번째 변수 -> 간격
4. 튜플, 리스트 - 인덱스

아무것도 쓰지 않으면 끝의 값
4. 딕셔너리
파이썬에 내장된 데이터 구조로, 데이
터를 인덱스가 아닌 키에 연결할 수
있게 한다.
다른 언어의 매핑, 해시 등과 비슷
4. 딕셔너리 생성
방법 1 - 팩토리 함수 이용
4. 딕셔너리 생성
방법 2 - 중괄호 사용
4. 딕셔너리 항목 추가
방법 1
수정할 때도 마찬가지
4. 딕셔너리 항목 추가
방법 2 - 중괄호 사용
여러개 한꺼번에 추가 가능
4. 딕셔너리 항목 접근, 삭제
접근
삭제
5. 함수 - 선언

선언
def add(x,y) :
if type(a) != type(0) :
return False
return x+y
함수 선언 시 들어오
는 변수의 자료형을
정해주지 않음
def이란 문구를 통해 선언
 선언이 완료되면 ":"을 통해 선언이 종료되었음을 표시한 후,
수행할 작업을 구성하면 됨

5. 함수 - 선언
 선언
- default값 설정 default값 설정할 일이 많음
def say_myself(name, old, sex=1):
print "나의 이름은 %s 입니다." % name
print "나이는 %d살입니다." % old
if sex:
print "남자입니다."
else:
print "여자입니다."
5. 함수 - 선언

선언 - 불특정한 갯수의 값
def multi_add(*args) :
result
=0
def
multi_add(*args)
for i in args:
result = 0
result = result+i
i in args:
returnfor
result
:
result = result+i
return result
5. 함수 - 선언
선언
default값 설정
시 주의
5. 함수 - 변수의 범위
a=1
def vartest(a) :
a=a+1
vartest(a)
print a
결과는?
5. 함수 - 변수의 범위
5. 함수 - 변수의 범위
과 다를 것이 없음
함수를 이용해 외부의 a를 1증가시킬 방법?
5. 함수 - 변수의 범위
방법 1
a=1
def vartest(a):
a = a +1
return a
a = vartest(a)
print a
여기서도 물론 vartest의 a는
외부의 a와 다른 a지만 리턴
값을 설정해주어서 외부의
a에 리턴값을 넘겨주면서
해결할 수 있다.
5. 함수 - 변수의 범위
방법 2
a=1
def vartest():
global a
a = a+1
vartest()
print a
global이라는 명령어를 사용
global a : 함수 내부의 a에서
외부의 a를 사용하겠다는
의미
외부에 종속적인 함수보다는
독립적인 함수가 좋음 -> 안
좋은 방법
6. 클래스, 상속
생성자
객체 지향 프로그래밍(OOP:objective-oriented
programming)에서 쓰이는 객체 초기화 함수
객체의 생성 시에만 호출되어 메모리 생성과 동
시에 객체의 데이터를 초기화하는 역할
6. 클래스, 상속
생성자
class person(object) :
def __init__(self, name, year, month, day):
self.name = name
self.year = year
self.month = month
self.day = day
6. 클래스, 상속
생성자
>>> p = person("엄인배", 1994, 4, 3)
>>> print p.name
엄인배
>>> p.year, p.month, p.day
(1994, 4, 3)
6. 클래스, 상속
str
def __str__(self):
return "%s - %d월 %d일생" % (self.name,
self.month, self.day)
6. 클래스, 상속

생성자, str
6. 클래스, 상속
메서드
from datetime import date
class person(object) :
def __init__(self, ...) : ...
def __str__(self, ...) : ...
def dday_to_birthday(self):
return date(self.year, self.month,
self.day) - date.today()
6. 클래스, 상속
 __init__,
__str__, 등 미리 정의된 이름?
http://docs.python.org/reference/datamodel.html#
special-method-names
사실 한번도 읽어본 적은 없어요...
읽어보면 좋을지도?!
6. 클래스, 상속
 상속(inheritance)
class person(object) : ...
class newtype(person) : ...
object 클래스는 모든 클래스의 조상 클래스
6. 클래스, 상속
상속
관계 알아보기
>>> type(p1).__bases__
(<type 'object'>,)
>>> type(p2).__bases__
(<class 'person'>,)
7. 입/출력 함수
 입력함수
input()
7. 입/출력 함수
 입력함수
raw_input()
input()과 raw_input()의 차
이
raw_input()은 모든 데이터를 문
자열로 입력받음
7. 입/출력 함수
 출력함수
print()
7. 입/출력 함수
 출력함수
print()
8. 파일 입/출력 함수
옵션) -> 파일오픈
 f.close() -> 파일 닫기
 f.write(내용) -> 내용저장
 f.readline() -> 한줄 읽기
 f.readlines() -> 전체내용 읽기(리스트 리턴)
 f.read() -> 전체내용 읽기(문자열 리턴)
 f.tell() -> 파일포인터 위치 리턴
 f.seek(정수) -> 파일포인터 이동
 open(파일,
파일 입/출력 함수
f = open(파일, 'w')
while 1:
line = f.readline()
if not line: break
print line
f.close()
QUESTION?