08 Python_01

Download Report

Transcript 08 Python_01

Python
RaspberryPi
Sejin Oh
Python
 파이썬이란 무엇인가?
 파이썬이란 1990년 암스테르담의 귀도 반 로섬에 의해 만들어진 인
터프리터 언어이다.
 파이썬은 사람이 생각하는 방식을 그대로 표현할 수 있도록 해주는
언어이다.
• 컴퓨터식 사고 방식으로 프로그래밍을 하려고 애쓸 필요가 없다.
 파이썬으로 시스템 프로그래밍, 하드웨어 제어, 매우 복잡하고 많은
반복 연산 등은 파이썬으로 개발할 수 있다.
 파이썬은 오픈소스이므로 당연히 무료이다. 언제 어디서든 파이썬
패키지를 다운로드해 쓸 수 있고, 사용료를 지불해야 할 필요가 없다.
Raspberry Pi
2
Python
 파이썬으로 할 수 있는 일
 시스템 유틸리티
• 파이썬은 운영체제(윈도우, 리눅스 등)의 시스템 명령어를 이용할 수 있
기 때문에 시스템 관련 유틸리티를 만드는데 유리하다.
 GUI(Graphic User Interface) 프로그램
 C/C++과 의 결합
• 파이썬은 접착(glue)언어라고도 불리운다. 그 이유는 C로 만든 프로그램
을 파이썬에서 쓸 수 있으며, 파이썬으로 만든 프로그램을 C에서 역시
쓸수 있다.
 CGI 프로그래밍
• 웹 브라우저를 사용하는 사용자가 서버 프로그램(게시판, 방명록 등)을
이용할 수 있게 해주는 도구
 수치연산 프로그램
 데이터베이스 프로그래밍
Raspberry Pi
3
Python
파이썬 설치
 파이썬 다운로드
 http://www.python.org > Downloads
Raspberry Pi
4
Python
대화형 인터프린터 언어
 Python은 대화형 인터프린터 언어
Raspberry Pi
5
Python
 a에 1을 b에 2를 대입한 다음 a와 b를 더하면 3이란 결과값을 보여준다.
 a라는 변수에 “python”이라는 값을 대입한 다음 print a를 해주면 a의
값을 출력해 준다.
Raspberry Pi
6
Python
 조건문 if
 변수 a에 3을 대입하고 a가 1보다 크면 “a > 1”을 출력
 If문에 대한 자세한 사항은 뒤편에서 다룸
Raspberry Pi
7
Python
 반복문 for
 For를 이용해서 [1, 2, 3]안의 값들을 하나씩 출력
 for문에 대한 자세한 사항은 뒤편에서 다룸
Raspberry Pi
8
Python
 반복문 while
 while문에 대한 자세한 사항은 뒤편에서 다룸
Raspberry Pi
9
Python
 함수 정의
 def는 함수를 만들때 사용되는 명령어이다.
Raspberry Pi
10
Python
자료형
 자료형
 자료형이란 프로그래밍을 할때 쓰이는 숫자, 문자열 등의 자료 형태
로 저장되는 그 모든 것을 뜻한다.
•
•
•
•
•
•
•
Raspberry Pi
숫자형(Number)
문자열(String)
리스트(List)
튜플(Tuple)
사전(Dictionary)
참과 거짓
변수
11
Python
숫자형
 정수형(Integer)
 양의 정수와 음의 정수, 숫자 0을 대입하는 예제
Raspberry Pi
12
Python
숫자형
 소수점이 포함된 것(Floating-point)
Raspberry Pi
13
Python
숫자형
 2진수, 8진수, 16진수
 a = 0b10
 b = 0o10
 c = 0x10
Raspberry Pi
14
Python
문자열
 문자열 합치기
 문자열 곱하기
Raspberry Pi
15
Python
문자열
 문자열 곱하기
Raspberry Pi
16
Python
문자열
 인덱싱(indexing)
 0부터 시작
 a[0]: ‘l’, a[1]: ‘i’, a[2]: ‘f’, a[3]: ‘e’, a[4]: ‘ ‘, a[5]: ‘i’, …….
 a[-5]는 문자열을 뒤에서 부터 읽어온다.
Raspberry Pi
17
Python
문자열
 슬라이싱(Slicing)
 A[0:6]가 뜻하는 것은 a라는 문자열에서 0부터 6-1까지의 문자를 뽑
아낸 다는 뜻
 항상 시작 번호가 0일 필요는 없다.
Raspberry Pi
18
Python
문자열
 슬라이싱(Slicing)
 a[시작번호 : 끝번호] 에서 끝 번호를 생략하면 시작번호 부터 그 문
자열의 끝-1까지 출력
 a[시작번호 : 끝번호] 에서 시작번호를 생략하면 그 문자열의 처음부
터 끝번호-1까지 출력
Raspberry Pi
19
Python
문자열 포매팅(Formatting)
 문자열 포매팅
 문자열 내에 어떤 값을 삽입하는 방법
“ 현재 온도는 18도 입니다.”
“ 현재 온도는 20도 입니다.”
 숫자 / 문자 / 변수 대입
>>> print “I eat %d apples.” % 3
I eat 3 apples
>>> print “I eat %s apples.” % “five”
I eat five apples
Raspberry Pi
20
Python
문자열 포매팅(Formatting)
 문자열 포맷 코드
Raspberry Pi
21
Python
문자열
 소문자를 대문자로 바꾸기(upper)
>>> a = “hi”
>>> a.upper()
“HI”
 대문자를 소문자로 바꾸기(lower)
>>> a = “HI”
>>> a.lower()
“hi”
 문자 개수 세기(count)
>>> a = “hobby”
>>> a.count(‘b’)
2
Raspberry Pi
22
Python
문자열
 위치 알려주기1(find) 찾는 문자나 문자열이 존재하지 않는다면 -1을 반환
>>> a = “Python is best choice”
>>> a.find(‘b’)
10
 위치 알려주기2(index) 찾는 문자나 문자열이 존재하지 않는다면 에러발생
>>> a = “Life is too short”
>>> a.index(‘t’)
8
 문자열 삽입( join)
>>> a = “,”
>>> a.join(‘abcd’)
‘a,b,c,d’
Raspberry Pi
23
Python
문자열
 왼쪽 공백 지우기(lstrip)
>>> a = “ hi”
>>> a.lstrip()
‘hi’
 오른쪽 공백 지우기
>>> a = “hi “
>>> a.rstrip()
‘hi’
 양쪽 공백 지우기(strip)
>>> a = “ hi “
>>> a.strip()
‘hi’
Raspberry Pi
24
Python
문자열
 문자열 바꾸기(replace)
>>> a = “Life is too short”
>>> a.replace(“Life”, “Your leg”)
‘Your leg is too short’
 대문자와 소문자를 서로 바꾸기
>>> a = “Hi man”
>>> a.swapcase()
‘hI MAN’
Raspberry Pi
25
Python
리스트
 리스트를 이용하여 숫자/문자들의 모임을 간단하게 표현
 리스트를 만들때는 대괄호([, ])로 감싸주고 안에 들어갈 값들은 쉼표로
구분해 준다.






A 리스트 : 아무 것도 포함하지 않는 빈 리스트
B 리스트 : 숫자를 그 요소 값으로 가지는 리스트
C 리스트 : 문자열을 요소 값으로 가지는 리스트
D 리스트 : 숫자와 문자열을 함께 요소 값으로 가지는 리스트
E 리스트 : 리스트 차체를 요소 값으로 가지는 리스트
리스트 내에는 어떠한 자료형도 포함시킬 수 있다.
Raspberry Pi
26
Python
리스트
 리스트의 인덱싱과 슬라이싱
 리스트의 경우에도 문자열처럼 인덱싱과 슬라이싱이 가능하다.
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a = [1, 2, 3, [‘a’, ‘b’, ‘c’]]
>>> a[0]
1
>>> a[0]
1
>>> a[-1]
[‘a’, ‘b’, ‘c’]
>>> a[0] + a[2]
4
>>> a[3]
[‘a’, ‘b’, ‘c’]
>>> a[-1]
3
>>> a[-1][0]
‘a’
>> a[-1][1]
‘b’
Raspberry Pi
27
Python
리스트
 리스트의 인덱싱과 슬라이싱
 리스트의 경우에도 문자열처럼 인덱싱과 슬라이싱이 가능하다.
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2]
>>> c = a[2:]
>>> b
[1, 2]
>>> a = [1, 2, 3, 4, 5]
>>> a[0:2]
[1, 2]
>>> c
[3, 4, 5]
Raspberry Pi
28
Python
리스트
 리스트의 합치기와 반복, 수정
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2 ,3]
리스트 합치기
리스트 반복
>>> a = [1, 2, 3]
>>> a[1:2]
[2]
>>> a[1:2] = [‘a’, ‘b’, ‘c’]
>>> a
[1, ‘a’, ‘b’, ‘c’, 4]
>>> a = [1, 2, 3]
>>> a [2] = 4
>>> a
[1, 2, 4]
리스트 수정1
리스트 수정2
Raspberry Pi
29
Python
리스트
 리스트의 요소 삭제
>>> a = [1, ‘a’, ‘b’, ‘c’, 4]
>>> a[1:3] = []
>>> a
[1, ‘c’, 4]
>>> del a[1]
>>> a
[1, 4]
리스트 요소 삭제
Raspberry Pi
30
Python
리스트
 del 객체
 del a[x]는 x번째 요소 값을 삭제한다.
 del 함수는 파이썬에서 자체적으로 가지고 있는 내장 함수이다.
del 객체
 객체: 파이썬에서 사용되는 모든 자료형을 뜻함
Raspberry Pi
31
Python
리스트
 리스트에 요소 추가(append)
 append(x)는 리스트의 맨 마지막에 x를 추가
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a.append([5, 6])
>>> a
[1, 2, 3, 4, [5, 6]]
Raspberry Pi
32
Python
리스트
 리스트 정렬(sort)
 sort 함수는 리스트의 요소를 순서대로 정렬하여 값을 돌려준다.
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a = [‘a’, ‘c’, ‘b’]
>>> a.sort()
>>> a
[‘a’, ‘b’, ‘c’]
>>> a = [‘abc’, 123, ‘you need python’]
>>> a.sort()
>>> a
[123, ‘abc’, ‘you need python’]
 숫자가 가장 앞에 오게된다.
 문자열은 첫 글자끼리 비교하여 정렬한다.
Raspberry Pi
33
Python
리스트
 리스트 뒤집기(reverse)
 Reverse 함수는 리스트를 역순으로 뒤집어준다.
 순서대로 정렬한다음 역순으로 정렬하는 것은 아니다.
 리스트 그대로를 뒤집는 일을 할 뿐이다.
>>> a = [‘a’, ‘c’, ‘b’]
>>> a.reverse()
>>> a
[‘b’, ‘c’, ‘a’]
 위치 반환(index)
 Index(x) 함수는 리스트 x라는 값이 있으면 그 위치를 돌려준다.
>>> a = [1, 2, 3]
>>> a.index(3)
2
>>> a.index(1)
0
Raspberry Pi
34
Python
리스트
 리스트에 요소 삽입(insert)
 Insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수
>>> a = [1, 2, 3]
>>> a.insert(0, 4)
[4, 1, 2, 3]
 리스트 요소 제거(remove)
 remove(x)는 첫번째 나오는 x를 삭제하는 함수
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
[1, 2, 1, 2, 3]
Raspberry Pi
35
Python
리스트
 리스트 관련 함수
함수
a.append(x)
a.sort()
설명
리스트 a의 마지막에 x추가
리스트 a를 정렬
a.reverse()
리스트 a의 순서를 거꾸로 만든다
a.index(x)
리스트 a에서 x를 찾아서 그 위치를 반환
a.insert(i, x)
리스트 a에서 i위치에 x 삽입
a.remove(x)
리스트 a에서 처음 나오는 x 삭제
a.pop()
리스트 a의 맨 마지막 요소 반환하고 마지막 요소 삭제
a.count(x)
리스트 a 안에 x가 몇 개 있는지를 반환
a.extend(x)
리스트 a에 리스트 x를 더함(확장)
Raspberry Pi
36
Python
튜플
 튜플(tuple)
 튜플은 리스트와 몇가지를 제외하고 거의 동일하다.
 리스트는 ‘[‘와 ‘]’으로 둘러싸지만 튜플은 ‘(‘과 ‘)’로 둘러싼다.
 리스트는 값을 생성, 삭제, 수정이 가능하지만 튜플은 변경이 불가능
하다.(상수와 유사함)
>>>
>>>
>>>
>>>
>>>
t1
t2
t3
t4
t5
=
=
=
=
=
()
(1, )
(1, 2, 3)
1, 2, 3
(‘a’, ‘b’, (‘ab’, ‘cd’))
 한 개의 요소만을 같은 튜플은 t2 = (1, )처럼 콤마를 넣어야한다.
 괄호 생략 가능
 리스트처럼 인덱싱, 슬라이싱, 더하기, 반복(곱) 가능
Raspberry Pi
37
Python
사전
 사전(dictionary)
 ‘사람’을 예로 들면 누구든지 “이름” = “홍길동”, “생일” = “몇 월 몇
일” 등으로 구분할 수 있다. 이러한 대응관계를 자료형으로 만든 것
을 말한다.
 위와 같은 자료형을 Associative array, Hash라고도 불린다.
 딕셔너리란 단어 그대로 해석하면 사전이란 뜻이다. 즉, people 이란
단어에 ‘사람’, baseball 이라는 단어에 ‘야구’라는 뜻이 부합되듯이
딕셔너리는 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다. 위의
예에서 보면 Key가 'baseball'이라면 Value는 '야구'가 될 것이다.
Raspberry Pi
38
Python
사전
 사전(dictionary)
 아래의 key는 각각 ‘name’, ‘phone’, ‘birth’이고 그에 해당하는 value
는 ‘pey’, ‘0119993323’, ‘1118’이 된다.
>>> dic = {‘name’:’pey’, ‘phone’:’01199993323’, ‘birth’:’1118’
key
value
name
pey
phone
01199993323
birth
1118
사전 dic의 정보
Raspberry Pi
39
Python
사전
 key를 이용하여 value 얻기
>>> grade = {‘pey’:10, ‘julliet’:99}
>>> grade[‘pey’]
10
>>> grade[‘julliet’]
99
>>> dic = {‘name’:’pey’, ‘phone’:’01199993323’, ‘birth’:’1118’}
>>> dic[‘name’]
‘pey’
>>> dic[‘phone’]
‘01199993323’
>>> dic[‘birth’]
‘1118’
Raspberry Pi
40
Python
사전
 사전 쌍 추가, 삭제하기
 사전은 순서를 따지지 않는다. 중요한 점은 무엇이 추가 되었는가이
다.
>>> a = {1:’a’}
>>> a[2] = ‘b’
>>> a
{1:’a’, 2:’b’}
>>> a[‘name’] = ‘pey’
>>> a
{1:’a’, 2:’b’, ‘name’:’pey’}
>>> del a[‘name’]
>>> a
{1:’a’, 2:’b’}
Raspberry Pi
41
Python
사전
 사전 주의사항
 Key는 고유한 값이므로 중복되는 값을 설정해 놓으면 하나를 제외
한 나머지는 무시된다.
 그러므로 중복되는 key를 사용하지 말 것
>>> a = {1:’a’, 1:’b’}
>>> a
{1:‘b’}
 Key에 리스트를 사용할 수 없다.
• Key자리에 리스트를 사용하면 에러발생
Raspberry Pi
42
Python
사전 관련함수
 Key 리스트 만들기(keys)
 a.keys()는 딕셔너리 a의 Key만을 모아서 리스트로 만든다.
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
['birth', 'name', 'phone']
 Value 리스트 만들기(values)
 마찬가지 방법으로 value만을 얻고 싶다면 a.values()처럼 values 함
수를 사용하면 된다.
>>> a.values()
['1118', 'pey', '0119993323']
Raspberry Pi
43
Python
사전 관련함수
 Key, Value 쌍 얻기(items)
 items 함수는 key와 value의 쌍을 터플로 묶은 값을 리스트로 돌려
준다.
>>> a.items()
[('birth', '1118'), ('name', 'pey'), ('phone', '011993323')]
 Key: Value 쌍 모두 지우기(clear)
 clear() 함수는 딕셔너리 안의 모든 요소를 삭제한다.
>>> a.clear()
>>> a
{}
Raspberry Pi
44
Python
사전 관련함수
 Key, Value 얻기(get)
 get(x) 함수는 x 라는 key에 대응되는 value를 돌려준다.
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'
 해당 Key가 있는지 조사(has_key)
 a.has_key(x) 함수는 딕셔너리 a에 x라는 key가 존재하는지의 참, 거
짓을 판단하여 존재하면 1을 존재하지 않는다면 0을 반환한다.
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.has_key('name')
True
>>> a.has_key('email')
False
Raspberry Pi
45
Python
사전 관련함수
 사전 관련함수
함수
a.Keys()
설명
딕셔너리 a의 Key들을 모아놓은 리스트를 돌려준다.
a.values()
딕셔너리 a의 Value들을 모아놓은 리스트를 돌려준다.
a.items()
딕셔너리 a의 (Key, Value)쌍의 터플을 모아놓은 리스트를 돌려준다.
a.clear()
딕셔너리 a의 모든 Key:Value 쌍들을 삭제한다.
a.get(x)
딕셔너리 a의 Key가 x인 것의 Value를 돌려준다.
a.has_key(x) 딕셔너리 a에 x라는 Key가 있는지 조사하여 참, 거짓을 돌려준다.
Raspberry Pi
46