파이썬과 기본 문법
📌 컴퓨터 프로그래밍 언어
컴퓨터(Computer) : Caculation(계산) + Remember(기억하다)
프로그래밍(Programming) : program(명령어의 모음(집합))
언어 : 자신의 생각을 컴퓨터에게 나타내고 전달하기 위해 사용하는 체계 문법적으로 맞는 말의 집합
프로그래밍 언어란? 컴퓨터에게 명령하는 말, 컴퓨터에게 명령하기 위한 약속들을 배운다.
📌 프로그래밍 언어를 공부할 때 생각해볼 부분
선언적 지식(declarative knowledge) : 사실에 대한 내용
- 거기 있는 빵 좀 꺼내와봐
명령적 지식(imperative knowledge) : How to 어떻게 해야할지를 명확하게 만들어 나가야한다.
- 빵 봉투를 연다 -> 어떻게 열어야할지 -> 빵을 꺼낸다 -> 몇 개를 꺼낼지
📌 파이썬이란?
- Easy to learn : 배우기 쉽다!
- 다른 프로그래밍 언어보다 문법이 간단하면서 엄격하지 않음
- 크로스 플랫폼 언어 : 윈도우, macOS, 리눅스, 유닉스 등 다양한 운영체제에서 사용 가능한 언어
- 인터프리터(interpreter) 언어
- 소스코드를 기계어로 변환하는 컴파일 과정 없이 실행 가능
- 코드를 대화하듯 한 줄 입력하고 실행한 후, 바로 확인할 수 있음
- 객체 지향 프로그래밍(Object Oriented Programming)
- 파이썬은 객체지향 언어이며 모든것이 객체로 구현되어 있음
- 객체(object) : 숫자, 문자, 클래스 등 값을 가지고있는 모든 것
- 파이썬은 객체지향 언어이며 모든것이 객체로 구현되어 있음
📌 코드 스타일 가이드
https://peps.python.org/pep-0008/
-> PEP8 공식문서, 스타일 가이드에 맞게 작성을 해보자!
기초 문법
📌 들여쓰기(Identation)
-
Space Sensitive
- 파이썬은 문장을 구분할 때 들여쓰기를 사용한다.
-
들여쓰기를 할때 4칸(space 4번) 혹은 1탭 입력
- 한 코드 안에서는 반드시 한 종류의 들여쓰기 사용 -> 혼용 x
- tab으로 들여쓰면 계속 tab으로 들여쓸것.
- 원칙적으로는 공백(space) 사용을 권장
📌 변수(Variable)
- 컴퓨터 메모리 어딘가에 저장되어 있는 객체를 참조하기 위해 사용하는 이름
a = 8
- 객체(object) : 숫자, 문자, 클래스 등 값을 가지고있는 모든것
-
동일한 변수에 다른 객체를 언제든 할당할 수 있기 때문에
'변수, 변할 수 있는 수'
라고 불린다. - 변수는 할당 연산자(=) 를 통해 값을 할당한다. 즉,
= 는 같다는 의미가 아닌 할당한다의 의미이다.
- type()
- 변수에 할당된 값의 타입
- id()
- 변수에 할당된 값(객체)의 고유한 아이덴티티 값이며, 메모리 주소.
x = 5
type(x) # 변수에 할당된 값의 타입을 알아냄
id(x) # 변수에 할당된 값의 메모리 주소를 알아냄
📌 식별자(identifiers)
- 파이썬 객체(변수, 함수, 모듈, 클래스 등)를 식별하는데 사용하는 이름
- 규칙
- 식별자 이름은 영문 알파벳, 언더스코어(_), 숫자 구성
- 첫 글자에 숫자가 올 수 없음
- 길이제한이 없고 대소문자를 구별
- 내장함수나 모듈 등의 이름으로도 만들면 안된다.(print 등)
📌 사용자 입력
-
input([prompt])
-
사용자로부터 값을 즉시 입력 받을 수 있는 내장함수
-
대괄호 부분에 문자열을 넣으면 입력 시, 해당 문자열 출력이 가능
-
반환값은 항상 문자열의 형태
name = input('이름을 입력해주세요 : ')
-
📌 주석
-
한 줄 주석(#)
-
주석으로 처리될 내용 앞에 ‘#’ 입력
# 주석입니다 a = "작동되는 코드" print(a) # 작동되는 코드 가 출력됩니다.
-
파이썬 기본 자료형(Datatype)
📌 자료형 분류
- boolean : 비교/논리 연산을 수행함에 있어서 활용
- true : 참
- false : 거짓
- 수치형(Numeric Type)
- int : 정수
- float : 실수
- complex : 복소수
- 문자열(String type)
- None
- 값이 없을을 표현하기 위한 타입
- 반환 값이 없는 함수에 사용되기도 함
📌 연산자
논리 연산자(Logical Operator)
- 논리식을 판단하여 참(True)과 거짓(False)을 반환함
연산자 | 내용 |
---|---|
A and B | A 와 B 모두 True시, True |
A or B | A 와 B 모두 False시, False |
Not | True를 False, False를 True로 |
- and : 모두 참인 경우 참, 그렇지 않으면 거짓
- or : 둘 중 하나만 참이라도 참, 그렇지 않으면 거짓
- not : 참 거짓의 반대의 결과
num = 100
num >= 100 and num % 3 == 1
# True
정수(int)
- 파이썬3에서 모든 정수의 타입은 int
- 오버플로우가 발생하지 않음
실수(Float)
-
정수가 아닌 모든 실수는 float 타입
-
부동소수점
-
실수를 컴퓨터가 표현하는 방법 - 2진수(비트)로 숫자를 표현
-
이 과정에서 floating point rounding error가 발생하여, 예상치못한 결과가 발생함
11/2 type(10/3) # <class 'float'> 1/-10**100 # -1e-100
-
수치형 연산자
📌 산술 연산자(Arithmetic Operator)
-
기본적인 사칙연산 및 수식 계산
연산자 내용 + 덧셈 - 뺄셈 * 곱셈 % 나머지 / 나눗셈 // 몫 ** 거듭제곱
📌 복합 연산자(In-place Operator)
-
연산과 할당이 함께 이루어짐
연산자 내용 a += b a = a + b a -= b a = a - b a *= b a = a * b a /= b a = a / b a //= b a = a // b a %= b a = a % b a **= b a = a ** b
📌 비교 연산자(Comparision Operator)
-
값을 비교하며, True/False 값을 리턴
연산자 내용 < 미만 <= 이하 > 초과 >= 이상 == 같음 != 같지않음 is 객체 아이덴티티(OOP) is not 객체 아이덴티티가 아닌 경우
문자열(String Type)
📌 중첩따옴표(Nested Quotes)
-
따옴표 안에 따옴표를 표현할 경우
- 작은 따옴표가 들어 있는 경우는 큰 따옴표로 문자열 생성
- 큰 따옴표가 들어 있는 경우는 작은 따옴표로 문자열 생성
print("문자열 안에 '작은 따옴표'") print('문자열 안에 "큰 따옴표"')
📌 삼중따옴표(Triple Quotes)
-
작은 따옴표나 큰 따옴표를 삼중으로 사용
print('''문자열 안에 "큰 따옴표"나 '작은 따옴표' 사용 가능''')
📌 문자열 연산자
a | b | c | d | e | f | g | h | i | |
---|---|---|---|---|---|---|---|---|---|
index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
index | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
- s[:3] => ‘abc’
- 처음을 생략시 시작점
- s[5:] => ‘fight’
- 끝을 생략시 마지막점
- s[2:5:2] => ‘ce’
- 3번째는
step
이라 부르는데, 지정한 숫자만큼씩 건너뜀
- 3번째는
- s[5:2:-1] => ‘fed’
- s[::] => ‘abcdefghi’
- s[::-1] => ‘ihgfedcba’
📌 결합(Concatenation)
'hello' + 'python'
📌 반복(Repetition)
'hello' * 3
📌 포함(Membership)
a in 'apple'
문자열의 활용
📌 탈출문자(escape sequence)
# 개행, 줄 바꿈
print('안녕하세요, \n반갑습니다')
# 따옴표
print("따옴표를 '씁니다'")
print('따옴표를 \'씁니다\'')
# 역슬래시
print('escape sequence는 역슬래시 \\를 활용합니다.')
📌 String Interpolation
-
문자열을 변수를 활용하여 만드는 법
-
f-string
# 문자열 안에 변수 넣기 score = 100 print(f'내 점수는 {score}이야.') pi = 3.141592 print(f'원주율은 {pi:.3}. 반지름이 2일때 원의 넓이는 {pi*2*2}') # '원주율은 3.14. 반지름이 2일때 원의 넓이는 12.566368'
-
형변환
📌암시적 형 변환(Implicit Typecasting)
- 사용자가 의도하지 않고, 파이썬 내부적으로 자료형을 변환 하는 경우
- bool
- Numeric type(int, float, complex)
📌명시적 형 변환(Explicit Typecasting)
- int
- str*, float => int
- float
- str*, int => float
- str
- int, float, list, tuple, dict => str
*str은 형식에 맞는 문자열만 가능
컨테이너(Container)
📌 컨테이너란?
- 여러 개의 값을 담을 수 있는 것(객체)으로, 서로 다른 자료형을 저장할 수 있음
- 예시 : List, tuple
📌 컨테이너의 분류
- 시퀀스 : 순서가 있는것
- 문자열 : 문자들의 나열
- 리스트 : 변경 가능한 값들의 나열, 순서를 가지며 서로 다른 타입의 요소를 가질 수있음, 변경 가능하며, 반복 가능함
- 튜플 : 변경 불가능한 값들의 나열, 순서를 가지며 서로 다른 타입의 요소를 가질 수 있음,
- 레인지 : 숫자의 나열, 변경 불가능하며, 반복 가능함
- 기본형 : range(n), 0부터 n-1까지 숫자 시퀀스
- 범위지정 : range(n, m), n 부터 m-1까지 숫자 시퀀스
- 범위 및 스텝 지정 : range(n, m, s), n 부터 m-1까지 s씩 건너뛰어서
- 컬렉션/비시퀀스 : 순서가 없는것
- 세트 : 유일한 값들의 모음, 순서가 없고 중복된 값이 없음, 변경 가능하며, 반복 가능함
- 딕셔너리 : 키-값 쌍으로 이뤄진 모음
- 키 : 불변 자료형만 가능(리스트, 딕셔너리 등은 불가능)
- 값 : 어떠한 형태는 관계 없음
#[시퀀스]
# 1. 리스트
# 값들의 나열
name = '김밥'
name1 = '피자'
name2 = '샌드위치'
foods = ['김밥', '피자', '샌드위치']
print(foods[0]) # 김밥
print(foods[-1]) # 샌드위치
순서로 접근
# 2. 튜플
a = (1, 2, 3, 1)
# 값 접근
a[1]
# 값 변경 => 불가능
a[1] = '3' # 에러
# 3. 레인지
numbers = range(5)
print(list(numbers))
# -> [0, 1, 2, 3, 4]
# [컬렉션/비시퀀스]
# 세트(set)
# set은 내부적으로 표현만 똑같이 하는 방법이 있을 뿐 순서는 없음
set_a = {1, 2, 3, 1, 2}
# {1, 2, 3}
set_b = {'hi, 1, 2'}
# {1, 2, 'hi'}
# set의 추가와 삭제 방법
set_a.add(4)
set_b.remove(4)
# 딕셔너리
# 키-값의 쌍
students = {
'1회차': ['동현', '효근'],
'2회차': ['수경', '나영'],
'3회차': ['다겸', '예지']
}
# 키로 접근
print(students['1회차'])
movie = {
'title': '설국열차',
'genres': ['SF', '액션', '드라마'],
'open_date': '2013-08-01',
'time': 126,
'adult': false,
}
print(movie['genres'])
# ['SF', '액션', '드라마']