* 강의를 듣고 필기한 내용일 이후에 따로 정리한 내용입니다.
1-1. 파이썬을 사용하는 이유
- 간결하고 쉽다
- JAVA나 다른 언어도 IDE(Integrated Development Environment, 통합개발환경)을 사용하기에 쓰는 것 자체가 길진 않다.
- 하지만 간결하기에 가독성면으로 굉장히 뛰어난편
- 이 이유로 유지보수와 협업도 유리함
* 추가 공부 자료
- http://helloworldcollection.de/
- https://zdnet.co.kr/view/?no=20201102154809 - 데이터분석과 머신러닝을 위한 수많은 라이브러리를 가지고 있다.
- 라이브러리 예시
- NumPy (Numerical Python : 산술연산) : 빠른행렬연산을 위한 라이브러리, 딥러닝시 사용
- pandas (Panel data & series) 행/열이 있는 엑셀 파일(정형데이터) 핸들링을 위한 라이브러리 : 엑셀데이터 사용에 용이
- matplotlib (matrix plotting library) : 데이터 시각화를 위한 라이브러리
- SciPy, scikit, TensorFlow 등 많은 라이브러리가 있음 - 다양한 확장이 용이하다
- R, Spss, Matlab, Excel, 등과 비교해서도 엄청나게 확장이 용이함
- 업무자동화의 경우, 이메일, SMS, 엑셀, CSV, 슬랙, 카카오톡 모두 가능할정도로 용이
1-2. 파이썬을 공부하기 위해서 Jupter Notebook을 사용하는 이유
- 프로그래밍 방법은 3가지가 있음 : Command line interface, .py, Jupter notebook
- Jupter Notebook 사용 이유
- 인터랙티브 프로그래밍 환경
- 코딩하며 결과를 바로 확인가능
- 문서화가 용이
- Anaconda 개발환경 적용(설치된 라이브러리, 파이썬 버전 등 호환이 쉬움)
- 단축키도 사용이 쉬움
주피터 노트북에서 쓰기 좋은 단축키
- Cell의 실행 : Shift + Enter
- Cell의 복사/붙여넣기/잘라내기 : ESC -> C / V / X
- 되돌리기 : ESC -> Z
- Delete : DD - 실수 방지, 리눅스의 텍스트편집에서 온 것
- Insert : 위 (A(above)), 아래(B(below))
- Edit mode -> ESC -> Command mode -> Enter -> Edit mode
- 만약에 함수가 무엇인지 모르면
1. 구글링을 한다
2. 함수 이름뒤에 커서를 두고 Shift + tab : 함수에 대한 설명서를 보여준다 (Shift + Tap : 함수 & 변수의 Docstring 확인)
Python 기초 함수 배우기
파이썬 공부에 좋은 사이트
- 파이썬을 이용한 장고 관련 내용 : https://wikidocs.net/135171
- 완전 입문용 파이썬 교재 : https://paullab.co.kr/%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84_%EC%96%95%EC%9D%80%EB%AC%BC.pdf
- 파이썬 교과서 : https://wikidocs.net/book/1
- 조금 심화학습을 원할때 강의 : https://school.programmers.co.kr/learn/courses/2/2-%EB%AC%B4%EB%A3%8C-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%AC%B8
2-1. 기초 데이터 타입
!!!반드시 기억해야할 함수!!!
- print(x) : x에 대한 값을 출력하라는 함수
- type(x) : x의 타입을 묻는 함수
- int (integer) 정수 , float (floating-point number) 실수 ==부동소수점 == Real number
- str (string) 글자를 나타냄(줄이 지어서 있단 의미)
- 서로의 타입을 바꾸는 것이 가능, int(), str()의 변수를 사용함
- 정수형과 실수형
- 숫자의 형태를 가진 타입
x = 9 # x변수에 9를 저장하는 것
#x == 9 : 같느냐?라는 질문문 -> 같으면 True , 다르면 False
#X != 9 : 같지 않느냐?라는 질문문 -> 같으면 False , 다르면 True
- 연산자 사용
+ (더하기), *(곱하기) , **(제곱연산)
/ (나누기-몫,소수점까지 계산됨), % (나누기-나머지)
- 변수를 담으려면 한번 더 적어줘야한다.
x *= 2
x
-> 원래 x가 4였다면, 지금의 x는 8이 된다.
y = 2.5
int (y) # from float to integer -> 2로 출력
x = 9
float(x) -> 9.0으로 출력
정수와 실수를 서로 바꿔줄 수 있음. 실수(소숫점이 있는경우)의 경우 내림이 됨
- 문자열
s = "Hello"
- (여러 멤버들을 가지고 있는)그룹형 변수 / 작은따옴표도 가능, 하지만 작은따옴표가 안이어야함
- type(s) ->str 출력
사용되는 주요 함수
len() : 그룹형 변수들의 멤버수 length(len) , 개수를 함. hello의 경우 5개
s. : str이라는 의미
s.supper : 모두 대문자로
s.lower : 모두 소문자로, lo까지 치고 tab을 누르면 나옴
format 함수의 사용
print("My name is {}".format("Groot"))
sentence = "My name is {}"
print(sentence.format("Groot"))
sentence = "My name is {} and my age is {}"
sentence.format("Groot", 32)
문자열 합치기 : 숫자열과 동일하게 +를 해주면 됨
print("Hello" + " " + "world") -> Hello world
중간까지 출력하기
temp = "Python"
temp[0] -> P 출력
temp[0:3] -> Pyt 출력
temp[4:] -> on 출력
temp[-1] # 뒤에서부터 시작, 뒤에서부터 몇번째라는 의미 -> n 출력
글자에서 곱하기
x = 214
x = str(x) # Integer to string <-앞에 x를 해줘야 덮어쓰기임 -> '1234112341'출력
'12341' *2
float('1234')*2 # 문자->숫자가 더 많이 사용됨 -> 2468.0
2-2. 함수
- 함수에 대하여 기본적인 내용
함수의 기본형태!라고 부르는 형태 **가장 많이 사용하게 되기에 꼭 기억하기**
def add_nums(num1, num2):
result = num1+num2
return result
def( define ) : 정의하다, 함수를 정의해주는 것
# add_numbs라는 함수안에 num1과 num2가 있다는 걸 정의함
# :를 쓰지 않으면 에러가 난다, 코드는 줄이 바뀌면 인지를 못함 -> 그렇기에 묶어줄 필요가 있음 :와 들여쓰기 사용!
- 용어 설명
- num1, num2 : parameter (매개변수) ->통계학/예측모델/프로그래밍에서 말하는 파라미터가 조금씩 다르다
-> 프로그래밍에서는 함수정의시 사용하는 임시 그릇
add_nums(2, 3)
- 2,3 : Argumnet (인자)
- ERROR문구
# SyntaxError : 에러는 무언가 쓰지 않았거나, 더 쓴 경우 나타나는 에러이다.
# TypeError : 타입이 잘못되었다는 에러
# IndentationError : 들여쓰기 에러
- 에러는 최대한 영어를 읽으면 이해가 할 수 있다. : 영어를 번역하면 대부분 이해가 됨
* missing 1 required : 자주 보이는 에러
-> 함수이름 뒤에서 Shift + TAB을 해주면 된다.
- 함수 안에 어떤 것이 들어가야하는 지 나온다. * not defined : 함수가 지금 정의가 된 게 없다는 의미. -> 해당 변수가 처음 등장했던 위치로 가서 cell 실행 - 함수에 디폴트 매기기 가능함 : 단 안에서 시작하기.
- 함수의 Scope : 함수의 집안은 집안안에서 끝난다.
- 함수를 실행했을때, 위에서부터 실행되고, 메모리에 올라간다.
- 함수 내부에는 별개로 저장이 되어있지 않고, 전체가 들어가있기에 일부만을 실행하기 불가능하다.
2. Quiz
# Quiz 1. 성과 이름을 받아 이름을 돌려주는 함수 name_creator 만들기
def name_creator(last, first):
full_name = last + first
return full_name
name_creator("그", "루트")
- 함수를 초기부터 작성하기 보다는 이전에 했던 걸 그대로 가져와서 수정하는 쪽으로 하면 쉽다.
- full name은 없이 해도 괜찮다. full name은 return으로 내보내기 위한 것이지, 후속조치가 필요없을 땐 생략가능.
# Quiz 2. 다음 함수는 에러를 출력합니다. 어디를 고쳐야할까요?
def drink():
beverage = "Coke"
print(beverage)
- 들여쓰기가 틀렸던 것. :뒤에는 반드시 들여쓰기를 해야한다.
# Quiz 3. 원의 반지름을 받아 원의 넓이를 Return 해주는 함수 circle_area 만들기 (ㅠ = 3.14)
def circle_area(radius):
result = 3.14 * radius ** 2
return result
circle_area(10)
* 절대 바닥부터 쓰지 말고, 기본모형을 가지고 와서 수정을 하는 법을 기억해야한다.
2-3. 컨테이너
# 가로의 종류가 중요함
list x = list(~~~) x = [1,2,3,4,5,.....]
dict x= dict(~~~~~)- 다른 데이터를 dict로 바꿀때 씀 , x ={key1:value1, k2:v2, k3:v3, ....}
tuple x= tuple (~~~) x = (1,2,3,4,5,...)- 잘 안 만드는 함수임
set x= set (~~~) x = {1,2,3,4,5,...}
#책에서 굉장히 방대하게 설명하나, 세부적인 건 안 쓰기에 그정도로 할 필요 없음
# CRUD - Create Read Update Delete : 웹프로그래밍 언어,
- 리스트변수를 어떻게 만들지, 읽지, 추가하지, 지우지 이렇게 공부하기
- list
x = [3,1,2,4,6] : 리스트 생성
x [0] -> 3이 출력
x [0:3] -> [3,1,2]가 출력
x [-1] -> 6이 출력
x [1:] -> 두번째부터 끝까지, [1,2,4,6]이 출력
x. 하고 tab을 누르면 10가지 정도 나오는데 이 중에서 몇가지 안 쓴다. ; 쓰는 것 알아두기
- append : 추가하기
x.append(10) # 리스트 item 추가하기
x -> [3, 1, 2, 4, 6, 10] 출력
- 지우기
x = [1,2,3,4,5]
del x : x라는 변수를 없애버리기
del x[0] : 첫번째꺼를 지우기 -> [2,3,4,5] 출력
* del은 함수가 아니라 명령어이다, 파이썬 내부에 있다.
# python list find index number by value를 통해서 데이터의 위치를 찾아서 이에 대해서 지울 수 있다.
x= [1,2,3,4,5]
x.remove [4] -> 4를 지워라. x=[1,2,3,5] 출력
* remove함수는 잘 안 안쓰는 함수이다.
- 중복되는 것을 지워주지 못함. 중복이 있으면 가장 앞에 있는 걸 지워줌.
리스트를 더하기
# 리스트 합치기
y = [3, 4, 5]
z = x + y # 쉽게 생각해보세요 :)
z -> [3, 1, 2, 4, 6, 3, 4, 5] 출력
리스트를 정렬하기
z.sort()
z -> [1, 2, 3, 4, 5, 6, 10] 출력
- 역순정렬
z.sort(reverse=True) # '거꾸로'를 영어로 reverse
-> [10, 6, 5, 4, 3, 2, 1] 출력
- dict : 딕셔너리 - 사전 쓰듯이 쓰면 됨
- key값 위주
: 를 넣는 곳
- index number 범위 지정 (ex. 'python'[1:3]
- 멀틸라인 코드 블록 (ex. def)
- dict에서 item 생성 (ex. {"key" : 'value', ....})
cage = {'Cat' : '야옹', 'Dog' : '멍멍'} # {key:value, key:value, ...}
cage
cage['Cat'] -> 야옹 출력
-> 여기서 뜨는 에러 : KeyError가 자주 뜸 (Key가 정의가 안되었을때 나타나는 오류)
-> 에러가 뜰 때, get을 넣어주면 된다.
cage('tiger') -> key에러가 출력
cage.get('Cat') -> 야옹이 출력
cage.get('tiger','없는동물') -> 없는 동물이 출력 : error를 부드럽게 넘어갈 수 있음
cage.get('Cat', '없는 동물') -> 야옹이 출력
in을 사용을 하여 key 체크를 할 수 있다.
# key 유무 체크가능
print('Cat' in cage) -> True
print('Pig' in cage) -> False
print('야옹' in cage) -> False
dict에 새로운 item 추가하기
cage['Pig'] = '꿀꿀' # dict에 새로운 item 추가하기
cage
cage['Pig] = '꿀꿀꿀' -> 꿀꿀꿀만 출력이 됨(중복X)
*** Key 값에 대한 중복을 허용하지 않는다
dict에 item 제거하기
del cage['Pig']
cage -> pig가 완전히 삭제
dict의 각각의 값만 모으기 및 list만들기
cage.keys() -> key 값만 모아라
list(cage.keys()) -> key값만 모아서 리스트를 만들어라
cage.values() -> values만 모아라
dict을 체크하는 함수
term = '야옹'
term in cage.key() : 야옹이 key값에 있는지 확인 ->False
term in cage.values() : 야옹이 values값에 있는지 확인 ->False
- tuple(튜플)
- 수정이 절대 불가능하다, 값과 크기가 바뀌지 않는다.
# 튜플이 사용되는 예시
def return_tuple(x, y):
return x, y , x**y, x*y/y, x**3
what = return_tuple(3, 4)
what -> (3, 4, 81, 3.0, 27)로 출력
- 함수의 실행결과로 reture값이 여러개일때 tuple로 받아줄 수 있음
- set
- 자동으로 중복제거 : list의 경우 중복은 전혀 신경쓰지 않음
s = {1,2,3,4,4,4,5,5}
s = {1,2,3,4,5}로 출력
- 바닥부터 만들지 않는데, list에 중복이 많으면 set함수를 이용하여 중복을 제거하는 목적으로 사용이 자주 됨.
temp = [1, 2, 3, 3, 4, 4, 5]
temp -> [1, 2, 3, 3, 4, 4, 5]
what = list(set(temp)) -> 중복이 날라간 list로 다시 만드는 방법
what -> [1, 2, 3, 4, 5]
- 두개의 리스트에 중복되는 아이템의 개수(교집합)을 구하는 것
list_a = ['감자', '고추가루', '설탕', '토마토', '계란', '고등어']
list_b = ['감자', '고추가루', '고등어', '무', '후추']
set_a=set(list_a)
set_b=set(list_b)
set_a.difference(set_b) # 차집합 -> {'계란', '설탕', '토마토'}
set_a.intersection(set_b) # 교집합 -> {'감자', '고등어', '고추가루'}
set_a.union(set_b) # 합집합 -> {'감자', '계란', '고등어', '고추가루', '무', '설탕', '토마토', '후추'}
2-4. 조건문과 반복문
- if (조건문)
- 주어진 조건이 참(True)일 때 그 아래에 있는 코드를 실행하는 조건문
- if는 True 혹은 False로 나오는 문을 적어준다.
if True : if문 아래의 내용은 무조건 적용
if False : if문 아래 내용 무시
- if문 사용 예시
def check_price(lunch_price):
price_label = ''
if lunch_price > 10000:
price_label = "프리미엄 도시락"
elif lunch_price < 3000:
price_label = "저렴이 도시락"
else: # 나머지 조건 모두 받기
price_label = "무난무난 도시락"
return price_label
check_price(15000) -> 프리미엄 도시락
check_price(1000) -> 저렴이 도시락
check_price(7000) -> 무난무난 도시락
* keyword : if, elif , else
- elif는 if가 아닌 경우, 다른 조건을 넣을 수 있음, 안 써도 괜찮고, 원하는 횟수만큼 사용 가능
- else : 뒤에 어떤 것도 적으면 안됨. 나머지 모든 경우를 말하는 것. 단 한 번만 사용 가능.
- : 을 빠뜨리지 않기! 굉장히 중요함!
- if문 사용 예시 (in과 함께 사용)
cage = ['Cat', 'Dog', 'Tiger']
if 'Cat' in cage: # Key 유무 체크
print('야옹아 이리온') -> 야옹아 이리온 출력
cage = {'Cat': '야옹', 'Dog': '멍멍', 'Tiger': '어흥'}
if 'Dog' in cage.keys(): # Key 유무 체크
print('치와와는 언제와') -> 출력
term = '멍멍'
if (term in cage.keys()) or (term in cage.values()):
print('들어있음') -> 출력
- 0이 아닌 모든 숫자 or 비어있지 않은 모든 그룹형 변수 -> True
- 0 or 비어있는 모든 그룹형 변수 -> False
if 1:
if (2,3) :
if [3,5,6] :
->True
if 0:
if []:
if () :
-> False
- for(반복문)
-for문과 관련된 문법적인 약속
for something in 그룹형_변수:
~~~(something)~~~
- 그룹형 변수를 안에 있는 멤버를 하니씩 꺼내서 무언가 적용을 해아할 때 사용
nums = [1, 2, 3, 4, 5]
for number in nums:
print(number) -> 1,2,3,4,5 각각 출력됨
print(Hello) -> Hello가 5번 출력됨
cage = {'Cat': '야옹', 'Dog': '멍멍', 'Tiger': '어흥'}
for item in cage.keys():
print(item) -> Cat Dog Tiger
for item in cage.values():
print(item) -> 야옹 멍멍 어흥
for item in cage.items(): # values + keys = items
print(item) -> ('Cat', '야옹') ('Dog', '멍멍') ('Tiger', '어흥')
# 숫자들의 리스트에서 1과 4가 연속으로 나오는 숫자 찾기
list_of_nums = [121142131512315, 1241561717265467, 153462615114151231, 1634263414616123, 15236172821568]
for num in list_of_nums: #num은 임시변수(아무거나 가능하지만 맞춰야함)
if '14' in str(num):
print(num)
->14가 들어있는 것만 출력
range 함수
range(5)
-> range(0, 5)가 출력됨
for index in range(5):
print(index) -> 0 1 2 3 4가 출력됨 : 5가 출력되지 않음
- 특정문을 여러번 출력하고 싶을 때, range함수를 쓰면 됨.
for문 시작전에 비어있는 리스트가 있을 경우
students = ['철수', '영희', '동수']
empty_list = []
for student in students:
empty_list.append('김' + student) # 리스트에 item 추가하기
empty_list -> ['김철수', '김영희', '김동수'] 출력
- empty_list가 주된 것, 이것을 채우기 위한 코드이다. for문으로 empty_list를 만드는 것이다.
- while (if +for 의 느낌, if랑 비교 필요)
temp = 1
while temp <= 10: # 10까지 무한루프반복
print(temp)
temp = temp + 1 # temp 를 1 증가시켜주려면?
# 무한 루프, Pass, Interrupting kernel
while True:
pass
- pass : 반복문이 스무스하게 지나갈 수 있게 해주는 명령문
- 쥬피터노트북에서 멈추는 방법 : 위쪽에 있는 Kernel -> Interrupt를 누르면 멈춤 :
안되는 경우엔 Restart하기 - 엔진을 껐다키는 것.
-> 모든 게 사라지기에 Run All above로 전체 재실행시켜서 돌리기
정말 안되면, 껐다켜야함.
idx = 0
while True:
if idx >= 5:
break
else:
print(idx)
idx += 1
- idx값이 계속 1씩 증가되는데, idx가 4가 되는 순간에 멈춤
- break : 강제적으로 종료시키는 명령문 <> pass
idx = 0
FLAG = 1
while FLAG:
if idx >= 5:
break
else:
print(idx)
idx += 1
- FLAG가 key가 되어서, FLAG가 0이면 출력되지 않고, 그 외의 수이면 출력됨
Quiz
# Quiz 4. 점수(0~100)를 입력으로 받아 학점을 돌려주는 함수 grade를 만드세요.
def grade(score):
if score > 90:
grade = "A"
elif score > 80:
grade = "B"
elif score > 70:
grade = "C"
else:
grade = "F"
return grade
grade(87) -> B 출력
# Quiz 5. 3개의 숫자를 입력으로 받아, 가장 큰 수를 돌려주는 함수 best 를 만드세요. (Hint. 리스트와 sort()를 활용해보세요.)
def best(a, b, c):
temp = [a, b, c]
temp.sort(reverse=True)
return temp[0]
best(20, 100, 60) -> 100 출력
# Quiz 6. 숫자 하나를 입력받아, 홀수면 "odd", 짝수면 "even"을 돌려주는 함수 odd_or_even을 만드세요. (나머지 연산 명령어는?)
def odd_or_even(num) :
if num % 2 == 0 :
return 'even'
else :
return 'odd'
odd_or_even(9) -> odd 출력
# Quiz 7. "20180323sunny" 와 같은 문자열을 입력받아, "Year is 2018, Day is 0323, Weather is sunny" 를 출력하는 함수 weather를 만드세요.
def weather(sentence) :
year = sentence[0:4]
date = sentence[4:8]
climate = sentence[8:]
result = "Year is {}, Day is {}, Weather is {}"
result = result.format(year, date, climate)
print(result)
weather('20180323still cold') -> Year is 2018, Day is 0323, Weather is still cold
Tip
- 네이밍 패턴
파이썬에서 잘 쓰는 패턴 : PEP8 (Python Enhancement Proposal, https://peps.python.org/pep-0008/)
- 철칙은 아니나 , 스타일 가이드를 읽어보는 게 좋음
- 들여쓰기는 space 4번을 권장함
다양하게 쓰는 패턴
- PascalCase : 앞이랑 중간이랑 대문자
- camelCase : 중간에만 대문자
- snake_case : 언더바로 이어주기 * 파이썬에서는 네이밍 패턴을 위주로 씀
- kebab-case : dash로 연결
요약정리
- 파이썬
-1. 파이썬을 사용하는 이유
- 간결하고 쉽다, 수많은 라이브러리가 있다. 확장이 용이하다.
-2. 파이썬을 공부할 때, 쥬피터 노트북을 사용하는 이유
-인터랙티브 프로그래밍 환경, 결과 바로 확인가능, 문서화가 용이, 단축키 용이 - 파이썬 기초 함수
- 1. 기초 데이터 타입
- type() 으로 타입을 확인할 수 있음
1) 정수형(int)/실수형(float) : 숫자형, 사칙연산가능
2) 문자열(str)
3) 참/거짓(bool)
- 2. 함수
- 함수의 기본 형태
def add_nums(num1, num2):
result = num1+num2
return result
- def( define ) : 정의하다, 함수를 정의해주는 것
- ERROR문구 : 에러는 최대한 영어를 읽으면 이해가 할 수 있다.
- 3. 컨테이너
1) 리스트 (list) : 가장 일반적으로 사용하는 그룹
- x = [1,2,3,4,5,.....] , x = list(~~~)
2) 딕셔너리 (dict) : 사전 쓰듯이 쓰면 됨
- x ={key1:value1, k2:v2, k3:v3, ....}, x= dict(~~~)
3) 튜플 (tuple) : 수정이 절대 불가능하다, 값과 크기가 바뀌지 않는다.
- x = (1,2,3,4,5,...), x= tuple (~~~)
4) 집합 (set) 자동으로 중복제거 : list의 경우 중복은 전혀 신경쓰지 않음
- x = {1,2,3,4,5,...} , x= set (~~~)
- 4. 조건문과 반복문
1) if (조건문) : 주어진 조건이 참(True)일 때 그 아래에 있는 코드를 실행하는 조건문
2) for (반복문)
- 문법적인 약속
for something in 그룹형_변수:
~~~(something)~~~
- 특정문을 여러번 출력하고 싶을 때, range함수를 쓰면 됨.
3) while (if+for)
- pass : 반복문이 스무스하게 지나갈 수 있게 해주는 명령문
- break : 강제적으로 종료시키는 명령문 <> pass
부족한 부분 추가 공부할 부분
함수 관련은 사용을 많이 하여서 괜찮다고 생각이 되나, 컨테이너 부분에 대한 추가적인 이해가 필요한 것 같다.
이해는 되나, 실사용에서 어려움을 느낄 수도 있다고 생각됨.
파이썬 함수에 대해서 조금 더 이론적인 공부가 더 필요하다고 생각됨.
- 실사용보다는 함수에 대한 실질적인 이해
'Upstage AI LAB 부트캠프 5기 > 실시간 공부내용 복습' 카테고리의 다른 글
[2024.10.07] Statistics 기초 강의 (2) | 2024.10.07 |
---|---|
[2024.10.04] 파이썬 프로그래밍 이해하기 (8) | 2024.10.04 |
[2024.10.01] 파이썬 프로그래밍 이해하기 (9) | 2024.10.02 |
[2024.09.30] 파이썬 프로그래밍 이해하기 (10) | 2024.09.30 |
[2024.09.25] Python 기초 강의 공부 내용 정리 (14) | 2024.09.25 |