Description
Lecture 2
기초문법과데이터구조
Jung-Il Choi
Material based on https://post.naver.com/hjchang0314
1. 변수와자료형
변수
컴퓨터에서자료가저장되는메모리공간의위치를의미한다.
변수를생성한다 = 메모리공간을확보한다 변수를할당한다 = 확보된메모리공간에데이터를저장한다 변수의이름은영문, 밑줄(_), 숫자의조합으로설정한다.
• 자료형
자료의기능과역할에따라구분된종류 기본자료형(숫자, 문자열, 불)
복합자료형(리스트, 튜플, 딕셔너리)
사용자자료형(클래스)
Python은정수, 실수, 2진수, 8진수, 16진수, 복소수등의다양한종류의숫자들을지원한다.
1) 정수형(int)
정수를의미하며다양한산술연산이가능하다.
파이썬의경우무한자릿수정수를지원한다. 무한자릿수정수는과학기술분야등에서유용하다.
2) 8진수
3) 16진수
2진수는 0b로시작하는 1또는 0의나열이다. 내장함수 bin(x)를사용하면정수를 2진수문자열로바꿀수 있다.
파이썬에서음의 2진수는 –를붙여표현한다.
• 숫자
5) 실수(float)
소수점이포함된숫자를말하며절대값이 (10−308, 10308) 범위의실수를표현가능하다. 내장함수 float()을이용하여실수를반환할수있다.
양의무한대와음의무한대는각각 float(‘inf’)와 float(‘-inf’)로, 숫자가아닌값(Not a Number)는 float(‘NaN’) 으로표현된다.
숫자
6) 복소수(complex)
허수를 j로표현하여정의하거나 complex함수를이용해정의할수있다.
숫자
숫자의산술계산에는다음과같은산술연산자를사용할수있다.
파이썬은문자열을표현하는 4가지방법을지원한다.
기본적으로는작은따옴표를양쪽으로둘러싸는문자열표현방법을사용한다.
‘This’ 작은따옴표로양쪽둘러싸기
“This” 큰따옴표로양쪽둘러싸기
”’This”’ 작은따옴표 3개를연속으로써서양쪽둘러싸기
“””This””” 큰따옴표 3개를연속으로써서양쪽둘러싸기
문자열의연산자
문자열의연산자에는 +,*,[],[:]이있다.
+ 문자열결합
* 문자열곱하기
[] 문자열색인
[:] 문자열슬라이싱
1) 문자열결합(+)
2) 문자열곱하기(*)
문자열의연산자
3) 문자열색인([])
문자열의색인(index)이란문자열을구성하는각문자의위치를의미한다. Python의색인은 0부터시작된다.
S c i e n c e c o m p u t i n g w i t h P y t h o n
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
문자열의부분집합을구하는데사용된다.
파이썬문자열은생성된후에내용을수정할수없는수정불가객체이다. 변경하려고하면오류가 발생한다.
리스트(list)
기본자료형을여러개나열하여관리할수있는형태의자료형
• 꺾인괄호([])를이용하여표현하며각원소는쉼표(,)로구분한다.
• 리스트는다른리스트를원소로포함할수있다.
• 각원소는색인(index)으로가리킬수있으며문자열과마찬가지로 0부터시작한다.
• 다음은리스트에서자주쓰이는명령어이다.
• 리스트는생성후내용의수정이가능한수정가능객체이다.
리스트(list)
다음과같이쉽게리스트를생성할수도있다.
• 리스트의경우원소간사칙연산이불가능하고읽고쓰는데시간이오래걸려과학계산에는적합하 지않다.
• 과학계산에는주로배열을사용한다.
• 튜플(tuple)
튜플은괄호()를이용하여표현한다.
리스트와동일한기능을하지만, 나열된원소를수정할수없는불변객체이다.
집합은다음과같은특징을가진자료형이다.
집합자료형은교집합, 합집합, 차집합연산을지원한다.
교집합연산
차집합연산
딕셔너리(dict)
키(Key)와값(value)로이루어진자료형으로중괄호({})를이용해표현한다.
딕셔너리의원소들은서로다른키를가져야한다.
딕셔너리의키는수정불가의객체를사용해야한다.
튜플은키로사용가능하지만리스트는사용할수없다.
색인(index)로접근하지않고키를이용해접근한다.
딕셔너리는원소의수정이가능한수정가능객체이다.
Python 키워드 True와 False는각각참과거짓을표현한다.
• 이외에다음에해당하는것들을거짓으로취급한다.
False, None, 숫자 0에해당하는것들, ‘’, (), {}, set(), range(0)
• 논리연산자
조건이참인지거짓인지판단해주는연산자이다.
• 비교연산자
두변수가같은지다른지논리적으로비교해주는연산자이다.
논리연산자예시
비교연산자예시
식별자(identifier)
프로그램에서사용되는모든종류의이름을의미한다.
변수, 함수, 클래스, 모듈, 객체의이름등이모두해당한다.
파이썬에서식별자는다음과같은형태를가져야한다.
식별자는 A~Z, a~z, 또는 _로시작해야한다. Python 3에서는한글글자로식별자를시작할수도있다.
이어서 A~Z, a~z, _, 0~9 가 0개이상나타날수있다. Python 3에서는이어서한글글자들이 0개이상나타 날수도있다.
Python 식별자는영문알파벳대소문자를구분한다. 예를들어식별자 xpos, Xpos, 그리고 xPos는모두다 른식별자이다.
키워드는식별자로사용할수없다.
• 키워드
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
미리의미와사용법이정해져있어다른의미나용도로 사용할수없는단어이다.
Python 3.7의경우다음과같은 35개의키워드가존재 한다.
할당문
파이썬은변수에처음으로값이할당될때에그변수가생성된다는특징이있다.
할당연산자 ‘=’을이용하여변수에값을할당한다.
[1]에서는변수 x가아직생성되지않 았으므로변수 x를참조하면오류가 난다.
[2]에서는변수 x에처음으로값이할 당되므로변수 x가생성되고그값은
100이된다.
[3]에서는이미생성된변수 x가참조 되므로 100이출력된다.
[4]에서는이미생성되어있는변수 x 에값 200이할당된다.
파이썬은다중할당문을지원한다.
블록과들여쓰기(Indentation)
파이썬은코딩블록을표시하기위해들여쓰기를사용한다.
{}를사용하는다른 C, C#, Java등과다른특징을가진다.
동일한블록에서공백수를다르게하면에러가발생한다.
• 줄과문장
파이썬에서하나의문장은하나의줄에나타내는것이원칙이다.
하지만 를이용하여하나의문장을여러줄로나누어표현할수도있다.
• 주석
주석은실제프로그램에는영향을주지않고코드에대한설명을할때사용하며, (#, ”””, ’’’)기호를 사용한다.
파이썬코딩스타일
들여쓰기로 4개의스페이스를사용하고탭(tab)을사용하지말라. 왜냐하면개발환경이나편집기 마다탭의설정이달라서혼란을일으킬수있다.
한줄은 79자를넘지않도록하라. 이조건은작은디스플레이화면을사용하는사용자를돕고, 큰 화면을사용하는경우에는여러개의코드들을나란히띄워놓고볼수있도록한다.
함수, 클래스, 함수내의큰코드블록사이에빈줄을넣어분리하라.
가능하다면주석은별도의줄로넣어라.
주석문자열을사용하라.
연산자들주변과콤마뒤에스페이스를넣고, 괄호바로안쪽에는스페이스를넣지말라. 예를들어, a = f(1, 1) + g(3, 4) 와같이한다.
클래스들과함수들에게일관성있는이름을붙여라. 인스턴스메소드의첫번째인자의이름은항 상 self로하라.
If 조건문
조건에따라다른계산을수행할때사용하는문장으로 if문의구조는다음과같다.
1) If 뒤의조건이참일때 (:) 뒤의문장을실행한다.
2) 앞선조건이거짓이고 elif 뒤의조건이참일때콜론(:) 뒤의 문장을실행한다.
3) 앞선조건이모두거짓일때 else 뒤의문장을실행한다.
Ex)
반복문
반복계산을하기위한문장으로 for와 while을사용한다.
• For문
For 문은리스트, 튜플, 집합, 딕셔너리, 문자열등과같은반복가능객체의원소들을대상으로하는 반복처리에사용된다.
For 문의구조는다음과같다.
For다음의변수가리스트의첫값부터끝값까지변하며콜론(다음부터 들여쓰기가끝나는곳까지반복수행한다.
For문
for 문에서많은원소들을갖는반복가능객체를직접표현하는것은코드의작성이번거롭고, 주기 억장치공간을소모할수있는방법이다.
Python 표준함수 range()를이용하면 for 문에서원소의수가많은리스트를편리하고효율적으로 사용할수있다.
While문
일정조건을만족시키는경우에반복계산을수행할때사용
While문의구조는다음과같다.
조건이참이면블록안(콜론(:)부터들여쓰기가종료되는부분)의문장을실행하고조건을다시판 단한다.
Ex)
Break 문
For문또는 while문을실행하다가중간에계산을중지할때사용한다.
Ex)
함수란?
특별한기능을수행하기위해독립적으로설계된코드블록을함수라고한다.
프로그램을함수로나누어작성하면가독성을높일수있고유지보수가쉬워진다.
함수에는내장함수와사용자정의함수, 람다함수가있다.
• 내장함수
파이썬내부에이미만들어져있는함수
Print(), type(), len() 등으로적절히호출하여사용할수있다. Ex)
• 사용자정의함수
사용자가프로그램에서반복되는부분을직접함수로정의한것 함수는 def를이용하여다음과같은구조로정의한다.
사용자정의함수
함수가정의되고나면함수를호출하여사용할수있다. 함수호출은다음과같은형태를갖는다.
함수이름(인자)
• 함수의매개변수와인자
함수정의에서 () 안에정의된변수들을매개변수(parameter)라고한다. 그리고함수호출에서 () 안에사용된값또는값을담은수식을인자(argument)라고한다.
매개변수는기본값을가질수있다. 다음 calc() 함수정의는 4개의매개변수들을가지며그들중 c 와 d는기본값을갖는매개변수이다.
기본값을갖는매개변수(default parameter) 뒤에는기본값을갖지않은매개변수(non-default parameter)가올수없다.
위치인자와키워드인자
위치인자 : 위치인자는대부분의 프로그래밍언어에서사용되는 기본적인방식이다. 함수호출시위치인자들과 매개변수들의대응은그들의 위치에의해정해진다.
위치인자와키워드인자
키워드인자: 위치인자는값또는수식의형태 를갖지만키워드인자는매개변수에대한할 당문의형태를갖는다. 키워드인자가사용되 는경우, 매개변수의이름에대응하여인자들 의값이전해진다.
키워드인자를사용하는경우매개변수의이 름들이사용되므로함수호출에사용되는키 워드인자들의순서와매개변수들의순서가 달라도된다.
함수를호출할때위치인자와키워드인자를 함께사용할수도있다. 다만키워드인자다음 에는위치인자가나올수없다.
가변길이인자
Python에서는매개변수앞에 * 또는 **를붙여인자들의개수가가변인함수를정의할수있다. 가 변길이위치인자들에대응하는매개변수의이름앞에는 *가붙는다.
함수의인자전달방식
Python의함수인자전달방식은값에의한전달(pass by value)이다.
Ex)
문장 6과 7이수행되면변수 a와 b는각각 100과 200이된다.
문장 8이호출되어문장 1이수행되고나면매개변수 x와 y의값은각각 100 과 200이된다.
함수의인자전달방식
Ex)
문장 2가수행되고나면다음좌측그림과같은상태가된다.
문장 3, 4가수행되고나면변수들의값은위우측그림과같은상태가된다.
따라서 10번문장을수행하면결과로 100, 200이출력된다.
Return문
return은 Python 키워드이다. 함수몸체에는 0개이상의 return 문이나타날수도있다. return 문의 형태는다음중하나이다.
return <expression>: expression을평가하여그결과값을반환하고함수의수행을종료한다.
return: 함수의수행을종료하고 None을반환한다. return 문이없는함수는 return None 문장이함
람다함수
한줄로사용하는매우간단한함수로, 이름이없어서익명함수라고도불린다.
람다함수의구조는다음과같다.
Ex)
Q&A Thanks for listening
Reviews
There are no reviews yet.