해당 개념과 하위 개념을 잘 묶어서 머릿속에 저장하는 것
- 개념의 정의
- 개념의 포함 관계
- 두 개념의 차이점
상호작용을 기반으로 한 학습
친구에게 배운 개념 설명하기
친구 코드의 에러 함께 해결하기
모르는 내용 서로 질문&대답하면서 지식의 빈틈 채우기
컴퓨터에게 일을 시키기 위해서 컴퓨터가 해야할 일을 순서대로 적어 놓은 프로그램을 만드는 행위
특정 작업을 수행하는 일련의 명령어들의 모음
컴퓨터는 0과 1(2진법)로 이루어진 기계어로 소통
처음 컴퓨터가 발명될 때, 전기 신호로 전기가 들어왔는지(1) 안 들어왔는지(0) 확인하던 것을 지금까지 사용
하지만 기계어로 의사소통하는 것은 어려움이 있음
기계어의 대안으로 사람이 이해할 수 있는 새로운 언어 개발 -> 프로그래밍 언어
사람이 이해할 수 있는 문자로 구성
기본적인 규칙과 문법이 존재
프로그래밍 언어로 작성된 프로그램
소스코드를 컴퓨터가 이해할 수 있는 기계어로 번역해줌
|| e.g. Python - 인터프리터
유용한 라이브러리 중에서 최소한만 사용하여 프로그램을 개발할 수 있어 가장 유리한 언어
프로그래밍 인기척도로 사용하는 PYPL index와 TIOBE index에서 2022년 6월 1위를 기록
AI개발, 데이터 분석, 웹 개발, 업무 자동화 등 Python 활용 분야가 늘어나고 많은 회사에서 도입 중
타 프로그래밍 언어에 비해 문법이 간결하고, 유연함 (변수에 별도의 타입 저장이 필요치 않음)
비교적 쉽게 익히고, 프로그래밍 사고에 집중할 수 있음
Python은 기계어로 번환할 때, 통역하듯이 1줄씩 변환
현대 프로그래밍의 기본적인 설계 방법론으로 자리잡은 객체 지향 프로그램
Python은 객체 지향 언어로, 모든 것은 객체로 구현되어있음
IDE (Integrated Development Environment): 통합 개발 환경
개발에 필요한 다양한 기능들이 포함되어 있음
|| e.g.) VS Code, XCode, Eclipse 등
Jupyter Notebook: 문법 학습을 위한 최적의 도구로, 소스코드와 함께 실행결과와 마크다운 저장 가능
open source 기반의 웹 플랫폼 및 어플리케이션
실시간으로 결과를 확인하며 학습할 수 있음
IDLE (Integrated Development and Learning Environment)
: 코드를 어떻게 작성할지에 대한 가이드 라인
파이썬에서 제안하는 스타일 가이드 : PEP8
각 회사/프로젝트마다 따로 스타일 가이드를 설정하기도 함
|| e.g. Google Style Guide
Space Sensitive
문장을 구분할 때 중괄호 대신 들여쓰기(Indentation) 사용
-코드를 보다 이해하기 쉽게하여 분석 및 수정이 용이해짐
-초기부터 주석을 다는 습관을 들일 것!
-잘 달린 주석은 어떤 정보보다 유용함
-코드의 내용을 잘 이해할 수 있도록 작성
-가독성을 저해할 정도로 무분별한 사용은 자제
-주석은 실행에 영향을 미치지 않고 프로그램의 속도를 느리게 하지 않으며 용량을 늘리지 않음
한줄 주석
주석으로 처리될 내용 앞에 #
을 입력
여러 줄 주석
한줄 씩 #
을 사용하거나, """
혹은 ```
으로 묶어서 표현할 수 있음
데이터를 저장하기 위해서 사용
변수를 사용하면 복잡한 값들을 쉽게 사용할 수 있음(추상화)
동일 변수에 다른 데이터를 언제든지 할당(저장)할 수 있음
변수는 할당 연산자=
을 통해 값을 할당(assignment)
americano_price = 2000
cookie_price = 1500
같은 값을 동시에 할당할 수 있음
americano_price = cookie_price = 2000
다른 값을 동시에 할당할 수 있음
americano_price, moka_price = 2000, 3000
x = 10, y = 20일 때, 각 값을 바꿔서 저장하는 코드를 작성해보자
x, y = 10, 20
temp = x
x = y
y = temp
print(x, y) #20, 10
x, y = 10, 20
y, x = x, y
print(x, y) #20, 10
변수 이름 규칙
_
, 숫자로 구성reserved words
로 변수 이름으로 사용할 수 없음import keyword
print(keyword.kwlist)
#출력 결과
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
기본적인 사칙연산 및 수식 계산
+ : 덧셈
- : 뺄셈
* : 곱셈
/ : 나눗셈
% : 나머지
// : 몫
** : 거듭제곱
괄호
가 가장 먼저 계산되고, 그 다음에 곱하기와 나누기
가 더하기와 빼기
보다 먼저 계산됨
프로그래밍에서는 다양한 종류와 값(data)를 쓸 수 있음
사용할 수 있는 데이터의 종류들을 자료형(Datatype)이라고 함
수치형(Numeric Type)
- int(정수, integer)
- float(부동소수점, 실수, floating point number)
- complex(복소수, complex number)
문자열(String Type)
불린형(Boolean Type)
None
0, 100, -200 같은 정수를 표현하는 자료형
일반적인 수학 연산 가능
- 2진수 binary : 0b
- 8진수 octal : 0o
- 16진수 hexadecimal : 0x
유리수와 무리수를 포함하는 '실수'를 다루는 자료형
0.1, 100.0, -0.001 등
실수 연산시 주의할 점(부동 소수점)
실수 값을 처리할 때 의도치 않은 값이 나올 수 있음
부동 소수점
실수 연산시 주의할 점(부동 소수점) - 해결책
값을 비교하는 과정에서 정수가 아닌 실수라면 주의할 것
매우 작은 수보다 작은지를 확인하거나 math 모듈 활용a = 0.1 b = 1.2 - 1.1 #0.9999999999999987 # 매우 작은 수와 비교 print(abs(a-b) <= 1e-10) # math 모듈 활용 import math print(math.isclose(a,b)) #True
모든 문자는 str
타입
문자열은 작은따옴표 '
나 큰따옴표"
를 활용하여 표기
역슬래시(backslash) 뒤에 특정 문자가 와서 특수한 기능을 하는 문자 조합
\n : 줄바꿈
\t : 탭
\r : 캐리지 리턴(carriage return) - 커서를 맨 앞으로 옮김
\o : Null
\\ : \
\' : 단일인용부호(')
\" : 이중인용부호(")
덧셈 (String Concatenation)
파이썬에서 문자열 덧셈은 문자열을 연결함
곱셉
문자열"Python"*3 ?
"Python"*3 # PythonPythonPython
name = 'Kim'
score = 4.5
print(f'Hello, {name}! Your score is {score}')
#Hello, Kim! Your score is 4.5
name = 'Kim'
score = 4.5
print('Hello, %s' % name) #Hello, Kim
print('My score is %d' % score) #My score is 4.5
print('My score is %f' % score) #My score is 4.500000
name = 'Kim'
score = 4.5
print('Hello, {}! Your score is {}'.format(name, score))
#Hello, Kim! Your score is 4.5
값이 없음
을 표현하기 위한 타입< : 미만
<= : 이하
> : 초과
>= : 이상
== : 같음
!= : 같지 않음
is : 객체 아이덴티티(OOP)
is not : 객체 아이덴티티가 아님
조건문
에서 사용되며 값을 비교할 때 사용여러 가지 조건이 있을 때 모든 조건을 만족하거나 (and), 여러 조건 중 하나만 만족해도 될 때 (or) 특정 코드를 실행하고 싶을 때 사용
A and B : A와 B 모두 True이면, True
A or B : A와 B 모두 False이면, False
A와 B 중 하나라도 True이면, True
Not : True를 False로, False를 True로
논리 연산자 주의할 점 / not 연산자
Falsy
: False는 아니지만 False로 취급되는 다양한 값
0, 0.0, (), {}, [], None, ""(빈 문자열)- 논리 연산자도 우선순위가 존재함
not, and, or 순으로 우선순위가 높음
print(3 and 5) #5, 첫번째 값 True, 두번째 값도 True, and는 모든 값 확인해야하기 때문에 두번째 값까지 확인 후 두번째 값 출력
print(3 and 0) #0 둘 중 하나의 값이 False이므로 0 출력
print(0 and 3) #0 둘 중 하나의 값이 False이므로 0 출력 ==> 당연히 False 첫번째 값 출력
print(0 and 0) #0 둘 중 두 값이 모두 False이므로 0 출력
print(5 or 3) #5 둘 중 하나의 값이 True이면 True ==> 두번째 값 확인하지 않고 첫번째 값 출력
print(3 or 0) #3 둘 중 하나의 값이 True이면 True ==> 두번째 값 확인하지 않고 첫번째 값 출력
print(0 or 3) #3 둘 중 하나의 값이 True이면 True ==> 첫번재 값 False, 두번째 값까지 확인 후 두번째 값 출력
print(0 or 0) #0 둘 중 두 값이 모두 False이므로 0 출력
여러 개의 값(데이터)를 담을 수 있는 것(객체)으로, 서로 다른 자료형을 저장할 수 있음
|| e.g. 시퀀스형 (List, Tuple, Range), 비시퀀스형 (Set, Dictionary)
|| e.g. 가변형 (List, Set, Dictionary), 불변형 (Tuple, Range)
여러 개의 값을 순서가 있는 구조로 저장하고 싶을 때 사용
가변 자료형(mutable)
대괄호[]
혹은 list()
를 통해 생성
Python에서는 어떤 자료형도 저장할 수 있으며, 리스트 안에 리스트도 넣을 수 있음
순서가 있는 시퀀스로 index를 통해 접근 가능
list[i]
로 값에 접근할 수 있음
여러 개의 값을 순서가 있는 구조로 저장하고 싶을 때 사용
리스트와의 차이점 : 생성 후, 담고 있는 값 변경 불가 (불가변 자료형, immutable)
소괄호 형태()
로 사용
소괄호()
혹은 tuple()
을 통해 생성
수정불가능한 시퀀스로 index로 접근 가능
tuple[i]
로 값에 접근할 수 있음
Tuple 생성 주의사항
tuple_a = (1,)
tuple_b = 1,
tuple_c = (1, 2, 3,)
tuple_d = (1, 2, 3)
tuple_e = 1, 2, 3,
tuple_f = 1, 2, 3
우변의 값을 좌변의 변수에 한 번에 할당하는 과정
일반적으로 파이썬 내부에서 활용
x, y = 1, 2
print(x, y) # 1 2
#실제로 튜플로 처리
x, y = (1, 2)
print(x, y) # 1 2
숫자의 시퀀스를 나타내기 위해 사용
주로 반복문과 함께 사용됨
print(range(o, 4)) #0, 1, 2, 3
range(n)
: 0 ~ n-1의 숫자의 시퀀스range(n, m)
: n ~ m-1의 숫자의 시퀀스range(n, m, s)
: n ~ m-1까지 s만큼 증가시키며 숫자의 시퀀스범위 및 스텝을 지정하여 역순으로 시퀀스를 만들 수 있음
range(6, 1, -1) #[6, 5, 4, 3, 2, 1] range(6, 1, -2) #[6, 4, 2] range(6, 1, 1) #[]
인덱스와 콜론을 사용하여 문자열의 특정 부분만 잘라낼 수 있음
slicing할 때, 콜론을 기준으로 앞 인덱스에 해당하는 문자는 포함하고 뒤 인덱스에 해당하는 문자는 미포함
print([1, 2, 3, 5][1:4]) #[2, 3, 5]
print((1, 2, 3)[:2]) #(1, 2)
print(range(10)[5:8]) #range(5, 8)
print('abcd'[2:4]) # cd
print([1, 2, 3, 5][0:4:2]) #[1, 3]
print((1, 2, 3, 5)[0:4:2]) #(1, 3)
print(range(10)[1:5:3]) #range(1, 5, 3)
print('abcdefg'[1:3:2]) # b
= 집합
중복되는 요소가 없이, 순서에 상관없는 데이터들의 묶음
데이터의 중복을 허용하지 않음 -> 중복되는 원소가 있다면 하나만 저장
순서가 없기 때문에 index를 이용한 접근 불가능
집합 연산이 가능 - 합집합, 교집합, 차집합 (여집합을 표현하는 연산자는 별도로 X)
가변 자료형(mutable)
중괄호{}
혹은 set()
을 통해 생성
빈 Set을 만들기 위해서는 반드시 set()
을 활용하여야 함
빈 중괄호는 type이 Dictionary임
black = {}
blank_set = set()
순서가 없어 별도의 값에 접근할 수 없음
my_list = ['서울', '서울', '서울', '광주', '거제', '광주', '부울경']
print(len(set(my_list))) #4
| : 합집합
& : 교집합
- : 차집합
^ : 대칭차집합 (합집합 - 교집합)
여집합은 없음
키-값(Key-Value) 쌍으로 이루어진 자료형 (3.7+ ordered, 이하 버전은 unordered)
중괄호{}
혹은 dict()
을 통해 생성
key를 통해 value에 접근
dict_a = {'a':'apple', 'b':'banana', 'list':[1,2,3]}
print(dict_a['a']) #apple
dict_b = dict(a = 'apple', b = 'banana', list = [1,2,3])
파이썬에서 데이터 형태는 서로 변환할 수 있음
print(True + 3) # 4
print(3 + 5.0) # 8.0
참고)
input() : 사용자로부터 데이터를 입력 받음
입력받은 데이터는 string으로 저장됨
변수, 함수, 클래스 등 프로그램이 실행되는 동안 다양한 값을 가질 수 있는 이름
예약어(reserved words)
읽혀지는 대로 쓰여있는 값 그 자체
새로운 데이터 값을 생성하거나 계산하는 코드 조각
특정한 작업을 수행하는 코드 전체
파이썬이 실행가능한 최소한의 코드 단위
모든 표현식expression은 문장statement이다.