40
Python과 함께 배우는 시스템 해석 부록 A. 과학계산용 Python 프로그래밍 기초 A-1. Python 프로그래밍 기초 박섭형 한림대학교 전자공학과 2014 9

Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께 배우는 시스템 해석

부록 A.과학계산용 Python 프로그래밍 기초A-1. Python 프로그래밍 기초

박섭형

한림대학교 전자공학과

2014년 9월

Page 2: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

배울 내용

Python 소개

Python 기본 문법

Python 함수

Python 논리식

Python 모듈

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 2

Page 3: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

신호 및 시스템과 Python

신호와시스템해석을효율적으로공부하기위해서는다양한기능을지원할수 있는 소프트웨어를 잘 활용하는 것이 중요

수열 또는 수식으로 표현되는 신호에 다양한 연산 필요디지털 신호의 주파수 성분을 분석할 때 사용하는 이산 푸리에 변환신호의 주파수 성분이나 시스템의 주파수 응답을 그래프로 표현디지털 신호와 시스템을 다루기 위한 복잡한 시스템의 시뮬레이션멀티미디어 데이터 처리

공학 분야의 시뮬레이션에 널리 사용되는 소프트웨어의 예Matlab®

C/C++PythonR

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 3

Page 4: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Matlab vs. Python

Matlab과 Python은 스크립트 언어로서 인터프리터 환경에서 간단한프로토타입을 개발할 때 효율이 높다

Matlab과 Python을 사용하면 C/C++에 비해서 벡터와 행렬을 다루는것이 쉽다

Matlab이 행렬 연산과 선형 대수에 필요한 연산을 간단하게 표현할 수있도록 하는 것에 초점이 맞추어져 있는 반면에, Python은 객체 지형언어로 범용 프로그래밍 언어로 개발되었다.

Python에는 다차원 배열을 효율적으로 다룰 수 있는 Numpy와 과학계산용과 수치 해석 도구에 특화된 Scipy, 그리고 Matlab의 그래프 기능과거의 동일한 함수들을 제공하는 Matplotlib 등을 조합하면 Matlab에서목표로 했던 기능 등을 충분히 얻을 수 있다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 4

Page 5: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Matlab과 Python 비교

Python과 Matlab은 모두 컴파일러가 아닌 해석기 (interpreter)에 의해서한줄마다 해석되어 실행되는 인터프리터 프로그래밍 언어 (interpretedprogramming language)로 실행 시간이 느린 반면에 프로그램 디버깅이간편하다.

Matlab은 상용 소프트웨어인 반면에 Python은 소스가 공개된 무료소프트웨어이다.

Python은 Matlab에비해언어의구조가유연하고다른프로그래밍언어와결합하여 사용하는 것이 쉽기 때문에 다른 언어로 개발되어 있는 많은 과학연산용은 물론 다양한 분야의 라이브러리를 함께 사용할 수 있다.

Matlab은 선형 대수 분야의 라이브러리를 기본으로 출발해서 여러 분야의toolbox들을 제공하면서 영역을 확장했다. 반면에 Python은 객체 지향(object oriented) 범용 프로그래밍 언어이며 다른 언어와 결합하여사용하는 것이 쉬워 Fortran, C 등과 같은 다른 언어로 이미 개발되어 있는라이브러리를 쉽게 이용할 수 있다.

Python 언어 자체는 지금도 발전하고 있으며 다양한 분야의 무료패키지들이 지속적으로 개발되고 있다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 5

Page 6: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Python 사용시 단점

Python의 개발 속도가 매우 빠르기 때문에 다양한 버전이 존재한다.

Python 2에서 Python 3으로 발전하면서 하위 호환성 (backwardcompatiblity)이 없어졌기 때문에 Python 2에서 개발된 소프트웨어들이Python 3에서 사용할 수 없는 경우가 많다.

다수의 package들을 동시에 사용해야 하는 경우에 각 package를 빌드할 때사용했던 Python의 버전이 다른 경우에는 모든 package를 동시에사용하는 것이 불가능하다.

여러 패키지를 동시에 사용할 필요가 있을 때 필요한 모든 패키지를 개인이직접 설치하는 것이 매우 까다롭다

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 6

Page 7: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Python 2와 Python 3

Numpy, Scipy, Matplotlib 등은모두 Python 2와 3과함께사용할수있다과학 계산용으로 Python과 함께 사용하고 싶은 라이브러리가 다양해질수록 Python 3보다는 Python 2를 사용하는 것이 안전하다.과학 계산용으로 Python을 사용하는 경우에는 Python 언어 자체보다는Python에서 사용할 수 있는 과학 계산용 라이브러리들을 사용하는 비중이훨씬 높은데 Python 2에서 사용할 수 있도록 만들어진 수많은 과학 계산용라이브러리들 가운데에는 아직 Python 3에서 사용할 수 없는 것들이 많기때문이다하

Python 2를 선택할 것이냐 3을 선택할 것이냐는 문제에 대한 답은 어떤것이 옳으냐의 문제라기 보다는 사용자가 필요한 라이브러리가 더 많은것을 선택하면 되는 것이다.

Python과 함께 사용하는 라이브러리의 갯수가 증가할 때 고려해야 하는버전 관리 문제이다.

Python(x,y) 패키지는 과학 계산용으로 사용할 수 있는 라이브러리를통합 제공하는 패키지이며, 이 패키지를 개발하는 그룹은 현재 Python 3이아닌 2에 집중하고 있다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 7

Page 8: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Python 실행하는 방법

명령프롬프트에서 Python Interpreter를실행한후에 Python 명령어실행

Text editor에서 편집 후 실행

IPython 등과 같은 enhanced shell에서 Python 명령어 실행Python IDE (Integrated Development Environments)에서 실행

Spyder : Python(x,y)와 함께 제공되는 IDE로 과학 공학용 시뮬레이션에특화되어 있음. Python 해석기에서 실행되기 때문에 실행 속도가 조금 늦은단점이 있는 반면에 Numpy, Scipy, Matplotlib를 사전에 import하기 때문에이 세 모듈을 import하는 별도의 명령어를 사용하지 않아도 된다. MSWindows, Mac OS X, Linux 등과 같은 주요 운영 체제에서 모두 실행할 수있다PyScripter https://code.google.com/p/pyscripter/: MicrosoftWindwos 환경에서만 사용할 수 있고, debugging 기능을 사용할 수 있다.Eclipse http://www.eclipse.org + PyDev plugin http://pydev.orgIDLE: Python 배포판과 함께 제공됨.Emacs as a Python IDE

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 8

Page 9: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

명령 프롬프트에서 대화형 Python을 시작하고 종료하기

Windows의 [시작]메뉴에서 검색 창에서 “cmd”를 찾아서 실행시키면 명령프롬프트 창이 생성된다.

명령 프롬프트 창에서 적당한 디렉토리로 변경한다. 예를 들어서

C:>cd C:\PyWork

라는 명령을 입력하고,

C:>\PyWork>python

이란 명령어를 입력하면 화면에 다음과 같은 표시를 볼 수 있을 것이다.

Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.150032 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for moreinformation.>>>

대화형 인터프리터를 종료할 때는 Ctrl-Z 키를 누른다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 9

Page 10: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Spyder에서 실행하기

그림 A.1 Spyder를 실행했을 때 나타나는 초기 화면.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 10

Page 11: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

PyScripter에서 Python 실행하기

그림 A.2 PyScripter를 실행했을 때 나타나는 초기 화면.한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 11

Page 12: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

텍스트 편집기를 사용한 Python 프로그래밍

텍스트 편집기는 사용자가 사용하기 편한 것을 사용하면 된다.

텍스트 편집기 가운데는 다양한 프로그래밍 언어를 지원하여 각 언어에서사용하고 있는 예약어를 인식하여 특별한 색으로 표현해주는 기능을 갖춘것들도 있다.

프로그램 소스를 파일로 저장할 때 파일 확장자는 *.py를 사용한다.

프로그램 소스를 저장한 파일을 실행하는 방법은 다음과 같은 두 가지방법을 사용할 수 있다. 예를 들어서 파일 이름이 example.py라고 가정해보자. 그러면

C:\>python example.py

라고 입력하면 해당 파일을 실행시킬 수 있다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 12

Page 13: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

IPython 사용하기

IPython은 Python(x,y)에 포함되어 있는 대화형 쉘 프로그램이다.

그림 A.3 IPython을 실행한 예.한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 13

Page 14: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Python에서의 기본 연산

연산 연산자 예 결과

덧셈 + 2 + 3 5뺄셈 − 5− 3 2곱셈 ∗ 5 ∗ 6 30

정수 나눗셈 / 8/3 2실수 나눗셈 / 8.0/3 2.666...

나눗셈 후의 나머지 연산 % 8%3 2지수승 ∗∗ 3 ∗ ∗2 9

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 14

Page 15: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Python 식별자(Identifiers)

Python 식별자는변수, 함수, 클래스, 모듈, 혹든 기타 객체들을식별하는데사용하는 이름을 말한다.

식별자는 A부터 Z 또는 a부터 z까지의 문자, 또는 밑줄 문자 (_) 다음에 0개 이상의 문자나 밑줄문자 혹은 숫자를 결합하여 만들 수 있다.

Python 식별자에는 @, $, and % 등과 같은 구분 문자를 사용할 수 없다.

Python은 대소문자를 구분한다.Python 식별자의 명명법은 다음과 같다.

클래스 이름은 첫글자는 대문자로 시작하고, 다른 식별자들은 소문자를사용한다.첫 문자가 단일 밑줄 문자인 식별자는 private을 의미한다.두 개의 밑줄 문자로 시작하는 식별자는 매우 강한 private 식별자이다.밑줄 문자 두 개로 끝나는 식별자는 Python에서 사용하는 특수 이름이다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 15

Page 16: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

Python 키워드

다음 스크립트는 Python의 현재 버전의 키워드 (keywords)를 알아보기위한 명령어와 그 결과이다.

>>> import keyword>>> keyword.kwlist['and', 'as', 'assert', 'break', 'class', 'continue','def', 'del', elif', 'else', 'except', 'exec', 'finally','for', 'from', 'global', 'if', 'import', 'in', 'is','lambda', 'not', 'or', 'pass', 'print', 'raise','return', 'try', 'while', 'with', 'yield']>>>

이 키워드는 상수나, 변수 혹은 다른 식별자들의 이름으로 사용할 수 없다.

예약어는 모두 소문자로 구성되어 있다.

None은 키워드는 아니지만 Python에서 상수로 사용하고 있는 내장객체이므로, 사용자가 다른 용도로 사용하면 안된다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 16

Page 17: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

명령 줄과 들여쓰기

클래스, 함수, 흐름 제어용코드블록을구분하기위해들여쓰기를사용한다.

들여쓰기를 할 때 공백 (space) 문자의 개수는 변할 수 있으나 해당 블록내에서는 반드시 공백 문자의 개수가 같아야 한다.

if True:print "True"

else:print "False"

정상적으로 실행되는 예

if True:print "Answer"print "True"

else:print "Answer"

print "False"

정상적으로 실행되지 않는 예

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 17

Page 18: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

여러 줄에 나누어 한 명령 줄 작성하기

Python의 명령줄은 개행 문자 (new line)로 끝난다.

Python은 줄 연속 문자 (line continuation character) (\)를 사용하여현재 문장이 다음 문장과 연결되어 있다는 것을 나타낸다.

total = item_one + \item_two + \item_three

[ ], { }, 또는 ( ) 사이에 있는 내용들은 줄 연속 문자가 필요없다. 예를들면, 다음과 같이 한 문장을 두 줄로 나누어 쓸 수 있다.

days = ['Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday']

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 18

Page 19: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

주석문

문자열 외부에 있는 해쉬 문자 (#)는 주석의 시작을 의미한다.

Python 해석기는 그 줄에서 # 문자 뒤의 모든 내용은 주석으로 간주하여무시한다.

# First commentprint "Hello, Python!" # second comment

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 19

Page 20: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

변수 및 할당

변수 이름은 대소문자를 구분한다.

변수 이름의 첫글자는 숫자가 될 수 없다.

변수 이름은 문자 (letters), 숫자, 그리고 밑줄문자 (underscores)로구성된다.

Python 문법에 사용되는 예약어와 라이브러리의 함수명은 변수 이름으로사용할 수 없다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 20

Page 21: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

변수 및 할당

Pyhton에서 변수를 사용할 때 변수형을 사전에 선언하지 않는다.

>>> a=3 # a, b는정수형데이터를대입했기>>> b=7 # 때문에정수형변수로처리된다.>>> a+b10>>> b/a2>>> d=2 # d는정수형으로처리된다.>>> e=4.3 # e는실수를대입했기때문에실수형으로처리된다.>>> d+e # 정수형과실수형을더하면실수형으로처리된다.6.3>>> pow(2,128)340282366920938463463374607431768211456L #long 정수형>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 21

Page 22: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

제어문 (while Loop)

>>> # Fibonacci series:... a, b, n = 0, 1, 1>>> while n < 7:... print n, b... a, b, n = b, a+b, n+1...1 12 13 24 35 56 8>>>

Python에는 여러 변수에 동시에 값을 할당할 수 있는 것이 매우 편리하다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 22

Page 23: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

제어문 (for Loop)

Python에서 for 루프에는 in 연산자가 사용된다.

>>> # Fibonacci series:... a, b = 0, 1>>> for n in range(1,7):... print n, b... a, b = b, a+b...1 12 13 24 35 56 8>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 23

Page 24: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

if, elif, else 제어문

if, elif, else 제어문 사용 예 1

>>> x = 10>>> if x < 0:... x = 0... print 'Negative changed to zero'... elif x == 0:... print 'Zero'... elif x == 1:... print 'Single'... else:... print 'More'...More>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 24

Page 25: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

if, elif, else 제어문

if, elif, else 제어문 사용 예 2

>>> score = 95>>> if score > 90:... print "Good!"... else:... print "Try again."...Good!>>> score = 85>>> if score > 90:... print "Good!"... else:... print "Try again."...Try again.>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 25

Page 26: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

assert 구문

Python에서 assert는 프로그램 중간에 어떤 조건이 사실인지를 조사한다.

만약에 조사한 조건이 거짓이면, 예외 (exception)가 발생하고 프로그램실행이 중지된다.

>>> x=10>>> assert( x<20)>>> assert( x>20)Traceback (most recent call last):

File "<stdin>", line 1, in <module>AssertionError>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 26

Page 27: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

함수 개요

Python에서 함수 정의 구문은 다음과 같다.

def name(parameter list):suite

대부분의함수는 return문으로끝나지만, 때로는 return문이없는함수도있다. 이 경우에는 반환하는 값이 없는 것이 아니고 None을 반환한다.

>>>def sum(a, b):... return a+b

...>>>print sum(5,15)20>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 27

Page 28: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

함수

함수에서 조건부 return을 사용할 수도 있다.

>>>def fact(n):... assert(n>0)... return 1 if n==1 else n*fact(n-1)...>>>def fact2(n):... assert(n>0)... if n==1:... return 1... else:... return n*fact2(n-1)...>>>fact(5)120>>>fact2(5)120

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 28

Page 29: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

함수 매개 변수의 기본값

함수의 매개 변수에 기본값 (default value)을 지정할 수 있다.

기본값이 지정된 매개 변수는 함수 호출할 때 조건부 변수이다.

>>> def myfun(b, c=3, d="hello"):... return b+c...>>> myfun(5,3,"hello")8>>> myfun(5,3,"Bye")8>>>>>> myfun(5,3)8>>> myfun(5)8

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 29

Page 30: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

함수 매개 변수의 기본값

함수를 호출할 때 매개 변수의 이름을 함께 사용하면 매개 변수의 순서를지키지 않아도 된다.

>>> def function1(a,b,c):... return (a+1, 3*b, a+b+c)...>>> function1(1,2,3)(2, 6, 6)>>> function1(b=1, a=2, c=4)(3, 3, 7)>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 30

Page 31: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

함수 매개 변수의 기본값

매개 변수에 기본값을 지정하는 경우에도 동일하다.

>>> def function1(a=2,b=3,c=1):... return (a+1, 3*b, a+b+c)...>>> function1(1,2,3)(2, 6, 6)>>> function1()(3, 9, 6)>>> function1(b=10)(3, 30, 13)>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 31

Page 32: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

객체로서의 함수

함수는 객체이며, 다른 객체와 마찬가지로 다음의 경우에 사용될 수 있다.

함수는 또 다른 함수의 매개 변수로 사용될 수 있다.함수는 또 다른 함수의 반환값으로 사용될 수 있다.함수는 변수에 할당될 수 있다.함수는 튜플이나 리스트의 일부로 사용될 수 있다.

>>> def f(x):... return x**2 + 1...>>> def g(x):... return x**3 + 1...>>> def applier(q, x):... return q(x)...>>> applier(f, 3)10>>> applier(g, 3)28>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 32

Page 33: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

참과 거짓

True와 False는 Python에서 정의한 상수이다. True와 False와 같게 취급되는값들의 종류에는 다음과 같은 것들이 있다.

True: 0아닌 숫자, 비어있지 않은 객체False: 0, None, 비어있는 container나 객체

Python에서 사용하는 비교 연산자에는 ==, !=, <>, <, <= 등이 있다.

>>> a = [1, 2, 3, 4]>>> b=a>>> a is bTrue>>> a.append(5)>>> a[1, 2, 3, 4, 5]>>> a is bTrue>>> a==bTrue

>>> x=3>>> y=x>>> x==yTrue>>> x is yTrue>>> y=5>>> x3>>> x==yFalse>>> x is yFalse>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 33

Page 34: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

and와 or의 특성

and와 or는 True와 False만을 반환하는 것이 아니라 연산에 사용된 수식들의값 중의 하나를 반환한다.

A and B and CA, B, C 모두 True이면 C의 값을 반환한다.그렇지 않으면, 첫번째 False 식의 값을 반환한다.

A or B or CA, B, C 모두 False이면 C의 값을 반환한다.그렇지 않으면, 첫번째 True 식의 값을 반환한다.

>>> 3 and 44>>> 3 and 0 and 50>>> 0 or (3==4)False>>> (3 != 4) and 33>>> (3!=3) and 5False>>>

>>> 3 or 43>>> 0 or 0 or 00>>> (3==3) or (4==3)True>>> 0 or (3==4)False>>>

and와 or는 lazy evaluation을 사용하기 때문에, 중간 단계에서 값이 결정되면더 이상 evaluation을 하지 않는다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 34

Page 35: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

모듈이란?

Python에서 모듈은 별도의 파일에 정의된 함수와 데이터를 말한다. 이 때,파일의 이름은 ‘module_name.py’가 되어야 한다.

모듈 전체 혹은 모듈의 일부를 사용하기 전에 from이나 import를 사용하여모듈을 불러 들인다.

>>> import moduleA>>> moduleA.function()>>> from moduleB import function>>> function()

이름이 다른 두 모듈에 같은 이름의 변수가 있는 경우에는 다음과 같이사용할 수 있다.

>>> import final>>> import midterm>>> final.score = final.score + midterm.score

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 35

Page 36: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

모듈이란?

모듈 이름이 긴 경우에는 다음과 같은 방법으로 모듈의 이름을 짧게 줄여서사용할 수 있다.

>>> import long_module_name as lmn>>> lmn.function()

모듈은 이름 공간이므로 서로 다른 모듈에 있는 동일한 이름의 변수 또는함수는 다른 변수 또는 함수로 취급된다.

그러나 이 방법을 사용하는 경우에 만약에 불러 들인 서로 다른 두 모듈에동일한 이름의 함수나 변수가 있다면 둘 사이에 충돌이 발생할 수 있기때문에 가급적 from module import *을 사용하지 않는 것이 좋다.

사용하는 모듈에 이름이 같은 함수나 변수가 없는 것이 확실하다면 이방법을 사용해도 좋다.

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 36

Page 37: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

모듈 사용하기

Python은 Python과 함께 배포되는 표준 모듈들을 포함하고 있다. Python에포함된 표준 모듈 중에서 몇 개를 소개하면 다음과 같다.

sys: 파이썬 시스템과 대화를 가능하게 한다.

os: 운영체제와 대화를 가능하게 한다.

string: 문자열을 처리할 수 있도록 해준다.

re(정규 표현식 regular expressions): 문자열을 유닉스 스타일로 다루도록해 준다.

math: 많은 수학적 함수에 접근하도록 해준다.

time: 시간 (그리고 날짜) 함수.

이 외에도 Python에는 수십가지의 모듈이 제공되고 있다. 자세한 내용은다음을 참조하기 바란다.http://docs.python.org/library/index.html

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 37

Page 38: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

모듈 사용하기

Python 인터프리터가 동작되면 자동적으로 몇 개의 모듈이 포함되는데, 이모듈들의 이름을 알아 보려면 dir() 명령어를 사용하면 된다.

>>> dir()['__builtins__', '__doc__', '__name__', '__package__']>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 38

Page 39: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

math와 cmath 모듈을 이용한 수학 연산

Math 모듈은 실수의 수학 함수를 cmath는 복소수의 수학 함수를 지원한다. 이두 모듈을 이용하면 여러 가지 수학적인 계산을 쉽게 처리할 수 있다.

>>> import math>>> math.sqrt(-4)Traceback (most recent call last):

File "<interactive input>", line 1, in <module>ValueError: math domain error>>> import cmath>>> cmath.sqrt(-4)2j>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 39

Page 40: Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 …contents.kocw.net/KOCW/document/2014/Hallym/parkseophyeong/2.pdf · Matlab은선형대수분야의라이브러리를기본으로출발해서여러분야의

Python과 함께배우는

시스템 해석

박섭형

math와 cmath 모듈을 이용한 수학 연산

cmath에 포함되어 있는 함수 가운데 극좌표와 직각좌표계 사이의 변환 함수cmath.polar( )와 cmath.rect( )의 사용법에 차이에 주의해야 한다.

>>> z = 1 + 1j>>> z(1+1j)>>> zp = cmath.polar(z)>>> zp(1.4142135623730951, 0.7853981633974483)>>> zp[0]1.4142135623730951>>> zp[1]0.7853981633974483>>> cmath.rect(zp[0], zp[1])(1.0000000000000002+1j)>>>

한림대학교 박섭형 Python과 함께 배우는 시스템 해석 제 2 강 Python 프로그래밍 기초 40