
파이썬 기본기를 다지는 글 입니다. 중간중간 내용이 빠지는 부분도 있으니 완전히 파이썬을 처음 접하는 분들 보다는 한 번 공부해 보셨던 분들이 복습용으로 보시는 게 좋을 것 같습니다.
Python에 대하여
- 오픈 소스, 무료 프로그램 입니다.
- 여러 패키지를 사용할 수 있습니다. (데이터 사이언스 용 패키지도 있음)
- 특징
- 인터프리터 언어입니다. 이는 복잡한 컴파일 과정 없이 코드를 바로 실행 가능하다는 의미입니다. (컴파일: 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 과정)
- 동적 타이핑을 지원합니다. 변수에 대한 type 선언 없어도 값 할당이 가능합니다. ex. x = 3이라고 변수를 만들면, 자동으로 변수가 int라고 생각합니다.
- IPython Shell: 여기서 파이썬 명령을 실행합니다.
- Python Script
- 텍스트 파일이고, .py로 끝납니다.
- 파이썬 명령들의 목록입니다.
- print()를 사용하여 출력 ⇒ print()는 데이터를 출력합니다. 괄호 안에 출력하고 싶은 내용을 넣으면 됩니다.
print("hello") #hello 출력 (글자를 출력하고 싶으면 ""를 사용해야 합니다.)
변수와 자료형
변수
- 구체적이고, case-sensitive한 이름을 가지고 있습니다.
- 변수에 데이터를 저장하고, 관리할 수 있습니다.
- 변수의 이름을 통해 어떤 값을 불러옵니다. (RAM에 특정 위치에 값을 저장하여, 나중에 이 값을 불러옵니다.)
- 변수의 이름을 지어줄 때엔 규칙이 있습니다.
- 숫자로 시작하면 안 됩니다.
- 대소문자를 구분합니다.
- 이미 의미가 정의된 키워드 (while, and, for 등)은 변수 이름으로 사용할 수 없습니다.
- (권장) 변수의 의미가 잘 드러날 수 있게 짓습니다. 여러 단어를 사용할 때엔 밑줄을 사용합니다.
- 각 변수는 하나의 값을 가지고 있습니다.
ex. x = 3 #x라는 변수에 3이라는 값 저장
pi_number = 3.14 #변수의 의미가 잘 드러날 수 있게 짓습니다. 여러 단어를 사용할 때엔 밑줄을 사용합니다.
print(x) #3 출력 (변수의 값을 출력할 수 있습니다.)
y = x + 1 #y라는 변수에 x의 변수값 + 1의 값을 할당 (이렇게 변수를 불러올 수도 있습니다.)
Reproducibility: 변수의 값을 변경하면, 전체에서 그 값이 변경됩니다.
x = 3 #원래 값 3
print(x + 1) #4 출력
x = 8 #8로 변경
print(x + 1) #9 출력
자료형
1. float (실수)
2. int (정수)
3. str (문자열)
- 포맷팅 (f-문자열)
word = 'python'
print(f"{python}") #python 출력
num = 3.14
print(f"{num:.1f}) #3.1 출력 (:.nf -> 소숫점 n자리까지만 출력, 반올림)
4. bool (T or F, 조건문)
- 비교 연산자 (==, !=, <, >, <=, >=)
- and
- True and True ⇒ True
- True and False ⇒ False
- False and True ⇒ False
- False and False ⇒ False
- or
- True or True ⇒ True
- True and False ⇒ True
- False and True ⇒ True
- False and False ⇒ False
- not
- not True ⇒ False
- not False ⇒ True
- 계산 순서: 괄호 내부 → not → and, or
5. list (리스트, 다양한 데이터를 순서를 가지고 저장)
- 값들의 모임입니다.
- 여러 타입을 같이 쓸 수 있습니다. ex. [’a’, 1, 3.0]
- 여러 타입을 넣을 수 있습니다.
- 리스트 안에 리스트를 넣을 수 있습니다.
- 리스트 manipulating 하기
- change list elements!
- add list elements!
- remove list elements!
- search!
- sort!
- analyze!
num_list = [0, 1, 2, 3, 4, 5]
#1
num_list[1] = 7 #인덱스 1 (1)의 값을 7로 변경 => [0, 7, 2, 3, 4, 5]
#2
num_list2 = [6, 7]
print(num_list + num_list2) #[0, 7, 2, 3, 4, 5, 6, 7]
num_list.append(3)
print(num_list) #[0, 7, 2, 3, 4, 5, 3]
num_list.extend(num_list2)
print(num_list) #[0, 7, 2, 3, 4, 5, 3, 6, 7]
num_list.insert(0, 3)
print(num_list) #[3, 0, 7, 2, 3, 4, 5, 3, 6, 7]
#3
del num_list[1]
print(num_list)#[3, 7, 2, 3, 4, 5, 3, 6 ,7]
print(num_list.pop(1)) #7
print(num_list) #[3, 2, 3, 4, 5, 3, 6, 7]
#4
print(num_list.count(3)) #3
print(list.index(3, 0, 7) #0
#5
print(num_list.sort()) #[2, 3, 3, 3, 4, 5, 6, 7]
print(num_list.sort(reverse = True)) #[7, 6, 5, 4, 3, 3, 3, 2]
print(num_list.reverse()) #[7, 6, 3, 5, 4, 3, 2, 3]
#6
max(num_list) #7
min(num_list) #2
sum(num_list) #33
len(num_list) #8
6. tuple (튜플, 리스트와 비슷하나 한 번 생성된 요소를 변경할 수 없음)
- 서로 다른 데이터 type을 가질 수 있습니다.
- 리스트와 같이 인덱싱을 사용할 수 있습니다.
- tuple unpacking
dessert = ("chocolate", "1$", "cafe")
name, cost, where_to_buy = dessert
print(name) #chocolate
print(where_to_buy) #cafe
print(cost) #1$
7. dictionary (딕셔너리, 키와 값의 쌍으로 데이터 저장)
- access value!
- change value or add value!
- delete value!
- print values or keys or all!
dic = {'a' : 1, 'b' : 2, 'c' : 3}
#1
print(dic['a']) #1
print(dic.get('a')) #1
#2
dic['a'] = 2
print(dic) #{'a' : 2, 'b' : 2, 'c' : 3}
dic['d'] = 4
print(dic) #{'a' : 2, 'b' : 2, 'c' : 3, 'd' : 4}
#3
del dic['d']
print(dic) #{'a' : 2, 'b' : 2, 'c' : 3}
c = dic.pop('c')
print(c) #3
#4
print(dic.keys()) #dict_keys(['a', 'b'])
print(dic.values()) #dict_values([2, 2])
print(dic.items()) #dict_items([('a', 2), ('b', 2)])
8. set (집합, 중복 없는 요소들로 이루어지고 요소들의 순서가 없음)
- 추가하기
- 제거하기
st = {1, 2, 3}
#1
st.add(4)
print(st) #{1, 2, 3, 4}
#2
st.remove(4)
print(st) #{1, 2, 3}
*서로 다른 자료형에 따라 서로 다른 행동을 취해야 합니다.
pi_number = 3.14 #float
print(int(pi_number)) #3
print(str(pi_number)) #'3.14'
print(list(pi_number)) #오류(float object is not iterable)
print(int(True)) #1
print(float(False)) #0.0
num_list = [1, 2, 2, 3, 4]
print(tuple(num_list)) #(1, 2, 2, 3, 4)
print(set(num_list)) #{1, 2, 3, 4} => 중복된 값 제거
num_dict = {'a' : 1, 'b' : 2, 'c' : 3}
연산 해보기
연산자
- 덧셈: +
- 뺄셈: -
- 곱셈: *
- 나눗셈: / (소수점 표현 나눗셈, 항상 실수형)
- 정수 나눗셈: // (소수점 이하 버림, 항상 정수형)
- 나머지: %
- 지수: **
연산 순서: ** → %, *, /, // → +, -
print(3 + 3) #int형 6 출력
print(3.0 + 3.0) #float형 6.0 출력
print(3.0 + 3) #float형 6.0 출력
print(10/2) #5.0 출력
print(10//2) #5 출력
print(10/4) #2.5 출력
print(10//4) #2 출력
복합 대입 연산자
x += 3
x = x + 3 #이 두개 코드는 같은 의미. 연산자와 =를 결합하여 축약
indexing 하기
인덱싱: 인덱싱을 사용하면 특정 위치 (str, list 등에서)에 접근할 수 있습니다.
**중요: 인덱스는 0부터 시작합니다.
[]안에 숫자를 써서 사용합니다. 음수도 가능합니다.
num_list = [0, 1, 2, 3, 4, 5]
print(num_list[0]) #0 출력
print(num_list[3]) #3 출력
print(num_list[-1]) #5 출력
print(num_list[-4]) #2 출력
word = 'python'
print(word[1]) #y 출력
print(word[-3]) #h 출력
slicing 하기
슬라이싱: 슬라이싱을 사용하면 str나 list에서 특정 부분을 추출할 수 있습니다.
[]안에 시작 인덱스 : 종료 인덱스를 넣습니다. (생략하면 전체 출력, 음수 넣으면 역순 출력)
**중요: 시작 인덱스부터 종료 인덱스 -1 인덱스까지 출력합니다. (예시를 보면 쉽습니다.)
num_list = [0, 1, 2, 3, 4, 5]
print(num_list[2:4] #인덱스 2부터 인덱스 3까지 출력, [2, 3] 출력
word = 'python'
print(word[2:5] #tho 출력
함수
- 다시 사용가능한 코드 블록입니다.
- 특정 업무를 수행합니다.
- 코드를 쓰는 대신에 함수를 호출하면 편리합니다.
ex.
- max() → 최댓값
- len() → 길이
- int() → 정수로 변환
- sorted() → ascending 정렬, reverse = True 사용하면 descending
- round(num, digit) → digit 없으면 정수로 round
메소드
- 모든 것 = 객체
- 모든 객체는 type 별로 연결된 메소드가 존재합니다.
- 객체로 함수를 불러옵니다.
ex.
list.index(a) → a의 인덱스 도출
list.count(a) → 리스트 속 a의 갯수 도출
list.append(a) → list에 a 넣기 (맨 끝에)
str.capitalize() → 대문자화하기
str.strip() → 양쪽 공백 제거하기
str.replace(’a’, ‘b’) → a를 b로 변환
str.index(’a’) → a의 위치 도출
**참고 (같이 공부하면 더 좋습니다!)
- Datacamp(유료) - Introduction to Python : 실습과 같이 공부해 보세요. 영어로 공부할 수 있어서 더 좋습니다.
- 데이스쿨(유료) - 파이썬 실행하기 (상) : 마찬가지로 문제를 풀어보며 공부해 보세요. 더 자세하고 프로그래밍에 대한 설명까지 포함되어 있어서 좋습니다.
- 혼자 공부하는 파이썬 (저자: 윤인성) : 기초적인 내용이 상세하게 설명되어 있어 좋습니다.