Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 기초 A-1. Python 프로그래밍 기초

Similar documents
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

17장 클래스와 메소드

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>


Microsoft PowerPoint - chap05-제어문.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

8장 문자열

PowerPoint Presentation

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap04-연산자.pptx

Chapter 2 변수와 수식 그리고 문장 프로그래밍 언어의 가장 강력한 기능 중 하나는 변수(variable)가 조작 가능하다는 것이다. 변수 는 값에 부여하는 이름이다. 2.1 할당문 할당문(assignment statement)은 새로운 변수를 생성하고 값을 부여

Microsoft PowerPoint - chap-03.pptx

歯 동아일보(2-1).PDF

Microsoft PowerPoint - chap01-C언어개요.pptx

14장 파일

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

Microsoft PowerPoint - lec2.ppt

3장 함수

제1절 조선시대 이전의 교육

< B5BFBEC6BDC3BEC6BBE E687770>

untitled

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

Microsoft PowerPoint - Lesson2.pptx

슬라이드 1

13백점맞는세트부록2년(49~57)

슬라이드 1

K&R2 Reference Manual 번역본

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

2월 강습회원의 수영장 이용기간은 매월 1일부터 말일까지로 한다.다만,월 자유수영회 원,자유수영 후 강습회원은 접수일 다음달 전일에 유효기간이 종료된다.<개정 , > 제10조(회원증 재발급)1회원증을 교부받은 자가 분실,망실,훼손 및

Microsoft PowerPoint - C++ 5 .pptx

JAVA PROGRAMMING 실습 02. 표준 입출력

> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제< > 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규

노인복지법 시행규칙

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

쉽게 풀어쓴 C 프로그래밍

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

쉽게

PowerPoint 프레젠테이션

15강 판소리계 소설 심청전 다음 글을 읽고 물음에 답하시오. [1106월 평가원] 1)심청이 수궁에 머물 적에 옥황상제의 명이니 거행이 오죽 하랴. 2) 사해 용왕이 다 각기 시녀를 보내어 아침저녁으로 문 안하고, 번갈아 당번을 서서 문안하고 호위하며, 금수능라 비

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

p529~802 Á¦5Àå-¼º¸í,Ç×ÀÇ

PowerPoint 프레젠테이션

2힉년미술

슬라이드 1

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Java ...

02 C h a p t e r Java

Tcl의 문법

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드]

PowerPoint 프레젠테이션

凡 例 一. 이 글은 朝 鮮 日 報 에 成 均 館 大 中 文 學 科 全 廣 鎭 敎 授 가 連 載 한 생활한자에서 拔 萃 하였다. 逃 가지런할 도 走 달릴 주 도주( 逃 走 ) 피하여 달아남. 도망( 逃 亡 ). 필사의 도주/그 피의자는 도주의 우려가 없어 보석금을 내고

Microsoft PowerPoint - Java7.pptx

부벽루 이색 핵심정리+핵심문제.hwp

며 오스본을 중심으로 한 작은 정부, 시장 개혁정책을 밀고 나갔다. 이에 대응 하여 노동당은 보수당과 극명히 반대되는 정강 정책을 내세웠다. 영국의 정치 상황은 새누리당과 더불어 민주당, 국민의당이 서로 경제 민주화 와 무차별적 복지공약을 앞세우며 표를 구걸하기 위한

PowerPoint 프레젠테이션

PDF

PowerPoint Template

歯처리.PDF

슬라이드 1


Hanyang Volunteer Corps volunteer image

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

0429bodo.hwp

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

cls46-06(심우영).hwp

최우석.hwp

교사용지도서_쓰기.hwp

E1-정답및풀이(1~24)ok

< BDC3BAB8C1A4B1D4C6C75BC8A3BFDC D2E687770>

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>


<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>

untitled

민주장정-노동운동(분권).indd

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

6±Ç¸ñÂ÷

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A C3D6C1BEBABB292E687770>

초등국어에서 관용표현 지도 방안 연구

177

제주어 교육자료(중등)-작업.hwp

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

01Report_210-4.hwp

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E D352D32315FC5E4292E687770>



교육 과 학기 술부 고 시 제 호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책

시험지 출제 양식

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

상품 전단지

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

2

DBPIA-NURIMEDIA

Transcription:

부록 A.과학계산용 프로그래밍 기초 A-1. 프로그래밍 기초 한림대학교 전자공학과 2014년 9월

배울 내용 소개 기본 문법 함수 논리식 모듈 한림대학교 제 2 강 프로그래밍 기초 2

신호 및 시스템과 신호와 을 효율적으로 공부하기 위해서는 다양한 기능을 지원할 수 있는 소프트웨어를 잘 활용하는 것이 중요 수열 또는 수식으로 표현되는 신호에 다양한 연산 필요 디지털 신호의 주파수 성분을 분석할 때 사용하는 이산 푸리에 변환 신호의 주파수 성분이나 시스템의 주파수 응답을 그래프로 표현 디지털 신호와 시스템을 다루기 위한 복잡한 시스템의 시뮬레이션 멀티미디어 데이터 처리 공학 분야의 시뮬레이션에 널리 사용되는 소프트웨어의 예 Matlab C/C++ R 한림대학교 제 2 강 프로그래밍 기초 3

Matlab vs. Matlab과 은 스크립트 언어로서 인터프리터 환경에서 간단한 프로토타입을 개발할 때 효율이 높다 Matlab과 을 사용하면 C/C++에 비해서 벡터와 행렬을 다루는 것이 쉽다 Matlab이 행렬 연산과 선형 대수에 필요한 연산을 간단하게 표현할 수 있도록 하는 것에 초점이 맞추어져 있는 반면에, 은 객체 지형 언어로 범용 프로그래밍 언어로 개발되었다. 에는 다차원 배열을 효율적으로 다룰 수 있는 Numpy와 과학 계산용과 수치 해석 도구에 특화된 Scipy, 그리고 Matlab의 그래프 기능과 거의 동일한 함수들을 제공하는 Matplotlib 등을 조합하면 Matlab에서 목표로 했던 기능 등을 충분히 얻을 수 있다. 한림대학교 제 2 강 프로그래밍 기초 4

Matlab과 비교 과 Matlab은 모두 컴파일러가 아닌 해석기(interpreter) 에 의해서 한줄마다 해석되어 실행되는 인터프리터 프로그래밍 언어 (interpreted programming language)로 실행 시간이 느린 반면에 프로그램 디버깅이 간편하다. Matlab은 상용 소프트웨어인 반면에 은 소스가 공개된 무료 소프트웨어이다. 은 Matlab에 비해 언어의 구조가 유연하고 다른 프로그래밍 언어와 결합하여 사용하는 것이 쉽기 때문에 다른 언어로 개발되어 있는 많은 과학 연산용은 물론 다양한 분야의 라이브러리를 함께 사용할 수 있다. Matlab은 선형 대수 분야의 라이브러리를 기본으로 출발해서 여러 분야의 toolbox들을 제공하면서 영역을 확장했다. 반면에 은 객체 지향 (object oriented) 범용 프로그래밍 언어이며 다른 언어와 결합하여 사용하는 것이 쉬워 Fortran, C 등과 같은 다른 언어로 이미 개발되어 있는 라이브러리를 쉽게 이용할 수 있다. 언어 자체는 지금도 발전하고 있으며 다양한 분야의 무료 패키지들이 지속적으로 개발되고 있다. 한림대학교 제 2 강 프로그래밍 기초 5

사용시 단점 의 개발 속도가 매우 빠르기 때문에 다양한 버전이 존재한다. 2에서 3으로 발전하면서 하위 호환성(backward compatiblity) 이 없어졌기 때문에 2에서 개발된 소프트웨어들이 3에서 사용할 수 없는 경우가 많다. 다수의 package들을 동시에 사용해야 하는 경우에 각 package를 빌드할 때 사용했던 의 버전이 다른 경우에는 모든 package를 동시에 사용하는 것이 불가능하다. 여러 패키지를 동시에 사용할 필요가 있을 때 필요한 모든 패키지를 개인이 직접 설치하는 것이 매우 까다롭다 한림대학교 제 2 강 프로그래밍 기초 6

2와 3 Numpy, Scipy, Matplotlib 등은 모두 2와 3 사용할 수 있다 과학 계산용으로 사용하고 싶은 라이브러리가 다양해질 수록 3보다는 2를 사용하는 것이 안전하다. 과학 계산용으로 을 사용하는 경우에는 언어 자체보다는 에서 사용할 수 있는 과학 계산용 라이브러리들을 사용하는 비중이 훨씬 높은데 2에서 사용할 수 있도록 만들어진 수많은 과학 계산용 라이브러리들 가운데에는 아직 3에서 사용할 수 없는 것들이 많기 때문이다하 2를 선택할 것이냐 3을 선택할 것이냐는 문제에 대한 답은 어떤 것이 옳으냐의 문제라기 보다는 사용자가 필요한 라이브러리가 더 많은 것을 선택하면 되는 것이다. 사용하는 라이브러리의 갯수가 증가할 때 고려해야 하는 버전 관리 문제이다. (x,y) 패키지는 과학 계산용으로 사용할 수 있는 라이브러리를 통합 제공하는 패키지이며, 이 패키지를 개발하는 그룹은 현재 3이 아닌 2에 집중하고 있다. 한림대학교 제 2 강 프로그래밍 기초 7

실행하는 방법 명령 프롬프트에서 Interpreter를 실행한 후에 명령어 실행 Text editor에서 편집 후 실행 I 등과 같은 enhanced shell에서 명령어 실행 IDE (Integrated Development Environments) 에서 실행 Spyder : (x,y)와 함께 제공되는 IDE로 과학 공학용 시뮬레이션에 특화되어 있음. 해석기에서 실행되기 때문에 실행 속도가 조금 늦은 단점이 있는 반면에 Numpy, Scipy, Matplotlib를 사전에 import하기 때문에 이 세 모듈을 import하는 별도의 명령어를 사용하지 않아도 된다. MS Windows, Mac OS X, Linux 등과 같은 주요 운영 체제에서 모두 실행할 수 있다 PyScripter https://code.google.com/p/pyscripter/: Microsoft Windwos 환경에서만 사용할 수 있고, debugging 기능을 사용할 수 있다. Eclipse http://www.eclipse.org + PyDev plugin http://pydev.org IDLE: 배포판 제공됨. Emacs as a IDE 한림대학교 제 2 강 프로그래밍 기초 8

명령 프롬프트에서 대화형 을 시작하고 종료하기 Windows의 [시작]메뉴에서 검색 창에서 cmd 를 찾아서 실행시키면 명령 프롬프트 창이 생성된다. 명령 프롬프트 창에서 적당한 디렉토리로 변경한다. 예를 들어서 C:>cd C:\PyWork 라는 명령을 입력하고, C:>\PyWork>python 이란 명령어를 입력하면 화면에 다음과 같은 표시를 볼 수 있을 것이다. 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> 대화형 인터프리터를 종료할 때는 Ctrl-Z 키를 누른다. 한림대학교 제 2 강 프로그래밍 기초 9

Spyder에서 실행하기 그림 A.1 Spyder를 실행했을 때 나타나는 초기 화면. 한림대학교 제 2 강 프로그래밍 기초 10

PyScripter에서 실행하기 그림 A.2 PyScripter를 실행했을 때 나타나는 초기 화면. 한림대학교 제 2 강 프로그래밍 기초 11

텍스트 편집기를 사용한 프로그래밍 텍스트 편집기는 사용자가 사용하기 편한 것을 사용하면 된다. 텍스트 편집기 가운데는 다양한 프로그래밍 언어를 지원하여 각 언어에서 사용하고 있는 예약어를 인식하여 특별한 색으로 표현해주는 기능을 갖춘 것들도 있다. 프로그램 소스를 파일로 저장할 때 파일 확장자는 *.py를 사용한다. 프로그램 소스를 저장한 파일을 실행하는 방법은 다음과 같은 두 가지 방법을 사용할 수 있다. 예를 들어서 파일 이름이 example.py라고 가정해 보자. 그러면 C:\>python example.py 라고 입력하면 해당 파일을 실행시킬 수 있다. 한림대학교 제 2 강 프로그래밍 기초 12

I 사용하기 I은 (x,y)에 포함되어 있는 대화형 쉘 프로그램이다. 그림 A.3 I을 실행한 예. 한림대학교 제 2 강 프로그래밍 기초 13

에서의 기본 연산 연산 연산자 예 결과 덧셈 + 2 + 3 5 뺄셈 5 3 2 곱셈 5 6 30 정수 나눗셈 / 8/3 2 실수 나눗셈 / 8.0/3 2.666... 나눗셈 후의 나머지 연산 % 8%3 2 지수승 3 2 9 한림대학교 제 2 강 프로그래밍 기초 14

식별자(Identifiers) 식별자는 변수, 함수, 클래스, 모듈, 혹든 기타 객체들을 식별하는데 사용하는 이름을 말한다. 식별자는 A부터 Z 또는 a부터 z까지의 문자, 또는 밑줄 문자 (_) 다음에 0 개 이상의 문자나 밑줄문자 혹은 숫자를 결합하여 만들 수 있다. 식별자에는 @, $, and % 등과 같은 구분 문자를 사용할 수 없다. 은 대소문자를 구분한다. 식별자의 명명법은 다음과 같다. 클래스 이름은 첫글자는 대문자로 시작하고, 다른 식별자들은 소문자를 사용한다. 첫 문자가 단일 밑줄 문자인 식별자는 private을 의미한다. 두 개의 밑줄 문자로 시작하는 식별자는 매우 강한 private 식별자이다. 밑줄 문자 두 개로 끝나는 식별자는 에서 사용하는 특수 이름이다. 한림대학교 제 2 강 프로그래밍 기초 15

키워드 다음 스크립트는 의 현재 버전의 키워드(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은 키워드는 아니지만 에서 상수로 사용하고 있는 내장 객체이므로, 사용자가 다른 용도로 사용하면 안된다. 한림대학교 제 2 강 프로그래밍 기초 16

명령 줄과 들여쓰기 클래스, 함수, 흐름 제어용 코드 블록을 구분하기 위해 들여쓰기를 사용한다. 들여쓰기를 할 때 공백(space) 문자의 개수는 변할 수 있으나 해당 블록 내에서는 반드시 공백 문자의 개수가 같아야 한다. if True: print "True" else: print "False" 정상적으로 실행되는 예 if True: print "Answer" print "True" else: print "Answer" print "False" 정상적으로 실행되지 않는 예 한림대학교 제 2 강 프로그래밍 기초 17

여러 줄에 나누어 한 명령 줄 작성하기 의 명령줄은 개행 문자(new line)로 끝난다. 은 줄 연속 문자(line continuation character) (\) 를 사용하여 현재 문장이 다음 문장과 연결되어 있다는 것을 나타낸다. total = item_one + \ item_two + \ item_three [ ], { }, 또는 ( ) 사이에 있는 내용들은 줄 연속 문자가 필요없다. 예를 들면, 다음과 같이 한 문장을 두 줄로 나누어 쓸 수 있다. days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] 한림대학교 제 2 강 프로그래밍 기초 18

주석문 문자열 외부에 있는 해쉬 문자(#)는 주석의 시작을 의미한다. 해석기는 그 줄에서 # 문자 뒤의 모든 내용은 주석으로 간주하여 무시한다. # First comment print "Hello,!" # second comment 한림대학교 제 2 강 프로그래밍 기초 19

변수 및 할당 변수 이름은 대소문자를 구분한다. 변수 이름의 첫글자는 숫자가 될 수 없다. 변수 이름은 문자(letters), 숫자, 그리고 밑줄문자(underscores) 로 구성된다. 문법에 사용되는 예약어와 라이브러리의 함수명은 변수 이름으로 사용할 수 없다. 한림대학교 제 2 강 프로그래밍 기초 20

변수 및 할당 Pyhton에서 변수를 사용할 때 변수형을 사전에 선언하지 않는다. >>> a=3 # a, b는 정수형 데이터를 대입했기 >>> b=7 # 때문에 정수형 변수로 처리된다. >>> a+b 10 >>> b/a 2 >>> d=2 # d는 정수형으로 처리된다. >>> e=4.3 # e는 실수를 대입했기 때문에 실수형으로 처리된다. >>> d+e # 정수형과 실수형을 더하면 실수형으로 처리된다. 6.3 >>> pow(2,128) 340282366920938463463374607431768211456L #long 정수형 >>> 한림대학교 제 2 강 프로그래밍 기초 21

제어문 (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 1 2 1 3 2 4 3 5 5 6 8 >>> 에는 여러 변수에 동시에 값을 할당할 수 있는 것이 매우 편리하다. 한림대학교 제 2 강 프로그래밍 기초 22

제어문 (for Loop) 에서 for 루프에는 in 연산자가 사용된다. >>> # Fibonacci series:... a, b = 0, 1 >>> for n in range(1,7):... print n, b... a, b = b, a+b... 1 1 2 1 3 2 4 3 5 5 6 8 >>> 한림대학교 제 2 강 프로그래밍 기초 23

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 >>> 한림대학교 제 2 강 프로그래밍 기초 24

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. >>> 한림대학교 제 2 강 프로그래밍 기초 25

assert 구문 에서 assert는 프로그램 중간에 어떤 조건이 사실인지를 조사한다. 만약에 조사한 조건이 거짓이면, 예외(exception)가 발생하고 프로그램 실행이 중지된다. >>> x=10 >>> assert( x<20) >>> assert( x>20) Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError >>> 한림대학교 제 2 강 프로그래밍 기초 26

함수 개요 에서 함수 정의 구문은 다음과 같다. def name(parameter list): suite 대부분의 함수는 return 문으로 끝나지만, 때로는 return 문이 없는 함수도 있다. 이 경우에는 반환하는 값이 없는 것이 아니고 None을 반환한다. >>>def sum(a, b):... return a+b... >>>print sum(5,15) 20 >>> 한림대학교 제 2 강 프로그래밍 기초 27

함수 함수에서 조건부 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 한림대학교 제 2 강 프로그래밍 기초 28

함수 매개 변수의 기본값 함수의 매개 변수에 기본값(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 한림대학교 제 2 강 프로그래밍 기초 29

함수 매개 변수의 기본값 함수를 호출할 때 매개 변수의 이름을 함께 사용하면 매개 변수의 순서를 지키지 않아도 된다. >>> 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) >>> 한림대학교 제 2 강 프로그래밍 기초 30

함수 매개 변수의 기본값 매개 변수에 기본값을 지정하는 경우에도 동일하다. >>> 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) >>> 한림대학교 제 2 강 프로그래밍 기초 31

객체로서의 함수 함수는 객체이며, 다른 객체와 마찬가지로 다음의 경우에 사용될 수 있다. 함수는 또 다른 함수의 매개 변수로 사용될 수 있다. 함수는 또 다른 함수의 반환값으로 사용될 수 있다. 함수는 변수에 할당될 수 있다. 함수는 튜플이나 리스트의 일부로 사용될 수 있다. >>> 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) 한림대학교 제 2 강 프로그래밍 기초 32

참과 거짓 True와 False는 에서 정의한 상수이다. True와 False와 같게 취급되는 값들의 종류에는 다음과 같은 것들이 있다. True: 0아닌 숫자, 비어있지 않은 객체 False: 0, None, 비어있는 container나 객체 에서 사용하는 비교 연산자에는 ==,!=, <>, <, <= 등이 있다. >>> a = [1, 2, 3, 4] >>> b=a >>> a is b True >>> a.append(5) >>> a [1, 2, 3, 4, 5] >>> a is b True >>> a==b True >>> x=3 >>> y=x >>> x==y True >>> x is y True >>> y=5 >>> x 3 >>> x==y False >>> x is y 한림대학교 제 2 강 프로그래밍 기초 33 False

and와 or의 특성 and와 or는 True와 False만을 반환하는 것이 아니라 연산에 사용된 수식들의 값 중의 하나를 반환한다. A and B and C A, B, C 모두 True이면 C의 값을 반환한다. 그렇지 않으면, 첫번째 False 식의 값을 반환한다. A or B or C A, B, C 모두 False이면 C의 값을 반환한다. 그렇지 않으면, 첫번째 True 식의 값을 반환한다. >>> 3 and 4 4 >>> 3 and 0 and 5 0 >>> 0 or (3==4) False >>> (3!= 4) and 3 3 >>> (3!=3) and 5 False >>> >>> 3 or 4 3 >>> 0 or 0 or 0 0 >>> (3==3) or (4==3) True >>> 0 or (3==4) False 한림대학교 제 2 강 프로그래밍 기초 34 >>>

모듈이란? 에서 모듈은 별도의 파일에 정의된 함수와 데이터를 말한다. 이 때, 파일의 이름은 module_name.py 가 되어야 한다. 모듈 전체 혹은 모듈의 일부를 사용하기 전에 from이나 import를 사용하여 모듈을 불러 들인다. >>> import modulea >>> modulea.function() >>> from moduleb import function >>> function() 이름이 다른 두 모듈에 같은 이름의 변수가 있는 경우에는 다음과 같이 사용할 수 있다. >>> import final >>> import midterm >>> final.score = final.score + midterm.score 한림대학교 제 2 강 프로그래밍 기초 35

모듈이란? 모듈 이름이 긴 경우에는 다음과 같은 방법으로 모듈의 이름을 짧게 줄여서 사용할 수 있다. >>> import long_module_name as lmn >>> lmn.function() 모듈은 이름 공간이므로 서로 다른 모듈에 있는 동일한 이름의 변수 또는 함수는 다른 변수 또는 함수로 취급된다. 그러나 이 방법을 사용하는 경우에 만약에 불러 들인 서로 다른 두 모듈에 동일한 이름의 함수나 변수가 있다면 둘 사이에 충돌이 발생할 수 있기 때문에 가급적 from module import *을 사용하지 않는 것이 좋다. 사용하는 모듈에 이름이 같은 함수나 변수가 없는 것이 확실하다면 이 방법을 사용해도 좋다. 한림대학교 제 2 강 프로그래밍 기초 36

모듈 사용하기 은 배포되는 표준 모듈들을 포함하고 있다. 에 포함된 표준 모듈 중에서 몇 개를 소개하면 다음과 같다. sys: 파이썬 시스템과 대화를 가능하게 한다. os: 운영체제와 대화를 가능하게 한다. string: 문자열을 처리할 수 있도록 해준다. re(정규 표현식 regular expressions): 문자열을 유닉스 스타일로 다루도록 해 준다. math: 많은 수학적 함수에 접근하도록 해준다. time: 시간(그리고 날짜) 함수. 이 외에도 에는 수십가지의 모듈이 제공되고 있다. 자세한 내용은 다음을 참조하기 바란다. http://docs.python.org/library/index.html 한림대학교 제 2 강 프로그래밍 기초 37

모듈 사용하기 인터프리터가 동작되면 자동적으로 몇 개의 모듈이 포함되는데, 이 모듈들의 이름을 알아 보려면 dir() 명령어를 사용하면 된다. >>> dir() [' builtins ', ' doc ', ' name ', ' package '] >>> 한림대학교 제 2 강 프로그래밍 기초 38

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 >>> 한림대학교 제 2 강 프로그래밍 기초 39

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) >>> 한림대학교 제 2 강 프로그래밍 기초 40