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