이하 내용은 강의와 위키독스의 e북을 참고하여 정리하였다.
강의 : 파이썬 기초 (2024 점프 투 파이썬) - YouTube
e북 : 점프 투 파이썬 - WikiDocs
1. 파이썬 기초
1) 파이썬 프레임워크와 라이브러리
- 웹 프로그래밍 : Django, FastAPI, Flask
- 인공지능과 머신러닝 : Tensorflow, PyTorch
- 수치 연산 프로그래밍 : NumPy
- 데이터 분석 : pandas
2) 파이썬으로 할 수 없는 일
- 시스템과 밀접한 프로그래밍
- 모바일 프로그래밍 : javascript-ReactNative, Dart-Flutter 등이 더 적합함.
3) 파이썬 사용해보기
- >>> (REPL, Read Evaluate Print Loop) : 파이썬 구문을 입력하면 바로 결과를 보여주고 다시 입력할 수 있는 도구
- cmd(명령 프롬프트)에서 파이썬 이용이 안될 때!
- [시스템 환경 변수 편집] 실행 → [환경 변수] → [시스템 변수] 내의 Path 변수 편집(더블 클릭) → [새로 만들기] → [찾아보기] → 파이썬이 설치된 폴더 선택 → [새로 만들기] → [찾아보기] → 파이썬 폴더 내 Scripts 폴더 선택 → 새로 만들어진 두 행을 "제일 위로" 이동 → 확인 확인 눌러서 나오기.
- 이 강의에서는 Visual Studio Code를 이용하기에, 새로 설치.
- 구글 Colab을 사용하면 웹에서 파이썬을 이용 가능.
4) Visual Studio Code 사용해보기
- [Ctrl + /] 혹은 코드 앞에 # : 주석으로 변경.
- 따옴표 3개 혹은 큰따옴표 3개를 앞뒤로 묶어줘도 주석으로 변경됨. 여러 줄을 한번에 주석으로 만들고 싶을 때.
- 터미널에서 cls 입력시 터미널이 깨끗해짐.
"""
여기는 주석입니다.
주석을 작성하면 됩니다.
"""
'''
이렇게 해도
주석입니다.
'''
print("Hello World!") # 이렇게 출력이 가능합니다.
# print("Hello World!!!") 여긴 주석이라 출력이 안됩니다.
5) 자료형
- 숫자형
- int : 정수형, 즉 1, 0, -3 등.
- float : 실수형, 즉 1.3, -23.42 등.
- 컴퓨터식 지수 표현 : 4.24e10(4.24*10^10), 4.24e-10 등
- 8진수 : 0o37 등
- 16진수 : 0x7A 등
- 연산자
- + - * / : 사칙연산
- ** : 제곱
- % : 나머지
- // : 몫
a = 5; b = 4
print(a+b) # 결과값 : 9
print(a-b) # 결과값 : 1
print(a*b) # 결과값 : 20
print(a/b) # 결과값 : 1.25
print(a**b) # 결과값 : 625
print(a%b) # 결과값 : 1
print(a//b) # 결과값 : 1
- 문자열
- 문자열을 만드는 방법들
- " a " , ' b ' , """ c """ , ''' d '''
- 문자열 안에 " 혹은 '를 넣고싶으면, " a ' b " 혹은 'a " b '라는 식으로도 가능하며, " \" " , ' \' ' 등을 이용 가능.
- 줄바꿈(2줄 이상)이 포함된 문자열을 넣고 싶다면 \n 을 입력하거나 큰따옴표, 따옴표를 세개 쓰기.
- 문자열 + 문자열, 문자열 * 숫자 가 가능.
- len(문자열) : 문자열의 길이를 출력. length.
- 문자열[숫자] : 문자열에서 숫자번째에 있는 문자를 인덱스. 인덱스는 0번부터 시작.
- 문자열[숫자1:숫자2:숫자3] : 문자열에서 숫자1(시작지점)이상, 숫자2(끝지점)미만 까지의 문자를 숫자3 간격으로 가져옴. 숫자1,2가 음수면 뒤에서부터 인덱싱함. 숫자1 혹은 숫자2가 공백이면 끝까지 가져옴. 숫자3(간격)이 음수면 거꾸로 가져옴. 이를 문자열 슬라이싱이라 함.
a = "Hello"
b = 'world!'
c = "I\'m"
d = '''your
father'''
print(a+b) # 결과값 : Helloworld!
print(c+d) # 결과값 : I'myour
# father
print(a*2) # 결과값 : HelloHello
print(a[1]) # 결과값 : e
print(len(a)) # 결과값 : 5
e = "Hello World!"
print(e[0:5]) # 결과값 : Hello
print(e[6:12]) # 결과값 : World!
print(e[:5]) # 결과값 : Hello
print(e[6:]) # 결과값 : World!
print(e[:]) # 결과값 : Hello World!
print(e[::2]) # 결과값 : HloWrd
print(e[::-1]) # 결과값 : !dlroW olleH
print(e[-1]) # 결과값 : !
print(e[-2]) # 결과값 : d
print(e[-3:]) # 결과값 : ld!
print(e[:-3]) # 결과값 : Hello Wor
print(e[-5:-2]) # 결과값 : orl
- 문자열 포맷팅
- %d : decimal, 십진의(십진수) 라는 뜻.
- %s : string, 문자열. 하지만 숫자 등도 포맷팅 가능!
- %f : floating, 부동소수.
- %% : 문자열에 %를 입력하고 싶을 때.
- %숫자s : 최소한 숫자만큼의 문자열 자리를 확보한다.
- %숫자.숫자f : 자리수 지정이 가능.
- {0} .format() : 대입할 순서를 정하고, 그 안에 값을 대입 가능! 숫자 대신 변수를 넣을 수도 있음.
- {0:a<,>,^b} : 각각 왼쪽, 오른쪽, 중앙 정렬, a자리는 빈칸을 a로 채우고, b는 몇자리 넣을지.
- {숫자:,} : 3자리마다 ,로 나눔.
- {{ }} : 특수기호 { 혹은 }를 문자열에 넣고 싶으면, 두번 입력.
- f포맷팅 : f 다음 문자열을 넣고, {변수}를 넣으면 간단히 입력가능. 중괄호 안에서 연산도 가능.
print("오늘 습도는 %d%%이며, 날씨는 %s입니다." % (10, "맑음")) # 결과값 : 오늘 습도는 10%이며, 날씨는 맑음입니다.
aa = "오늘 습도는 %d%%이며, 날씨는 %s입니다." % (70, "비")
print(aa) # 결과값 : 오늘 습도는 70%이며, 날씨는 비입니다.
bb = "%5s %-5s %5s %2.2f" %("HI", "hi", "VisualStudio", 283.281728)
print(bb) # 결과값 : HI hi VisualStudio 283.28
cc = "첫번째 대입 : {0}, 두번째 대입 : {1}, num변수 대입 : {num}, day변수 대입 : {day}".format(123, "World!", num=10, day="월요일")
print(cc) # 결과값 : 첫번째 대입 : 123, 두번째 대입 : World!, num변수 대입 : 10, day변수 대입 : 월요일
name = "민수" ; gender = "남자"
dd = f"첫번째 변수 : {name}, 두번째 변수 : {gender}"
print(dd) # 결과값 : 첫번째 변수 : 민수, 두번째 변수 : 남자
- 문자열 관련 함수(메소드)
- 문자열.count('문자') : 변수 내에 문자가 몇 개 포함되어 있는지 출력.
- 문자열.find('문자') : 문자의 인덱스를 찾음. 없으면 -1 출력.
- 문자열.index('문자') : 문자의 인덱스를 찾음. 없으면 에러.
- 문자열1.join('문자열2') : 문자열2 사이사이에 문자열1을 대입
- 문자열.upper() : 대문자로 바꾸기
- 문자열.lower() : 소문자로 바꾸기
- 문자열.lstrip() , 문자열.rstrip(), 문자열.strip() : 왼쪽 공백, 오른쪽 공백, 왼쪽 오른쪽 공백 다 없애기.
- 문자열.replace(문자열1, 문자열2) : 문자열에서 문자열1을 문자열2로 대체.
- 문자열.split("문자") : 문자열이 문자 기준으로 쪼개서 리스트를 만든다. 문자 없이 ()로 입력시 기본적으로 공백을 기준으로 나눔
a = " Hello World! HI:hi "
print(a.count("l")) # 결과값 : 3
print(a.find("o")) # 결과값 : 4
print(a.index("o")) # 결과값 : 4
print(a.find("z")) # 결과값 : -1
# print(a.index("z")) # 결과값 : 오류
print(a.join("HI")) # 결과값 : H Hello World! HI:hi I
print(a.upper()) # 결과값 : HELLO WORLD! HI:HI
print(a.lower()) # 결과값 : hello world! hi:hi
print(a.lstrip()) # 결과값 : Hello World! HI:hi
print(a.rstrip()) # 결과값 : Hello World! HI:hi
print(a.strip()) # 결과값 : Hello World! HI:hi
print(a.replace("o", "a")) # 결과값 : Hella Warld! HI:hi
print(a.split()) # 결과값 : ['Hello', 'World!', 'HI:hi']
print(a.split("o")) # 결과값 : [' Hell', ' W', 'rld! HI:hi ']
- 리스트 : 변수가 상자 하나라면, 리스트는 서랍장.
- listA = [1, 3, 5] : 이런 식으로 대괄호 안에 ,로 구분해서 넣으면 리스트.
- 파이썬에서는 숫자, 문자열 등 다른 자료형을 한 리스트에 담을 수 있음.
- 대체로 문자열과 비슷하게 작동.
listB = [1,2,3,['a','b','c']] ; print(listB[3][1]) # 결과값 : b , 리스트 안의 리스트 요소 출력
listB[3][1] = 'd' ; print(listB) # 결과값 : [1, 2, 3, ['a', 'd', 'c']] , 리스트 요소 변경
listB.append(4) ; print(listB) # 결과값 : [1, 2, 3, ['a', 'd', 'c'], 4] , 리스트에 요소 추가
listB.insert(2, 5) ; print(listB) # 결과값 : [1, 2, 5, 3, ['a', 'd', 'c'], 4] , 2번째 자리에 5 추가
listB.extend([6, 7]) ; print(listB) # 결과값 : [1, 2, 5, 3, ['a', 'd', 'c'], 4, 6, 7] , 리스트를 확장
# append는 그 자체 값을 추가, extend는 리스트를 확장.
listB.remove(5) ; print(listB) # 결과값 : [1, 2, 3, ['a', 'd', 'c'], 4, 6, 7] , 첫 번째 5 삭제
listB.pop() ; print(listB) # 결과값 : [1, 2, 3, ['a', 'd', 'c'], 4, 6] , 마지막 요소 삭제
# print(listB.pop()) 할 경우, pop()한 숫자를 출력 가능.
listB.pop(3) ; print(listB) # 결과값 : [1, 2, 3, 4, 6] , 3번째 요소 삭제
print(listB.index(3)) # 결과값 : 2 , 3의 인덱스 값
print(listB.count(3)) # 결과값 : 1 , 3의 개수
listB.sort() ; print(listB) # 결과값 : [1, 2, 3, 4, 6] , 오름차순 정렬
listB.reverse() ; print(listB) # 결과값 : [6, 4, 3, 2, 1] , 내림차순이 아닌 그냥 뒤집는 것
del listB[2] ; print(listB) # 결과값 : [6, 4, 2, 1] , 2번째 요소 삭제
listB.clear() ; print(listB) # 결과값 : [] , 리스트 비우기
2. 오늘의 정리
오늘 배운 부분은 다 외워두려면 쉽지 않겠지만, 이해는 어려울 부분이 없었다.
어떤 용어나 메소드들이 있었나 다시 확인해보면서, 코드로도 써보면서 익숙해지도록 해야겠다.
Visual Studio Code를 이용하니까, 메소드를 다 미리미리 적어주고 내가 쓰고 싶은 것도 미리미리 다 적어주니 편한데, 시험이나 그런 곳에서는 이런 기능을 사용하지 못할 테니까, 기능 없이도 코드를 쓸 수 있어야 할 것 같다.
'bootcamp' 카테고리의 다른 글
| 241230 점프 투 파이썬 (3) (1) | 2024.12.30 |
|---|---|
| 241230 점프 투 파이썬 (2) (1) | 2024.12.30 |
| 241229 SWEA 파이썬 프로그래밍 기초 (1) (0) | 2024.12.29 |
| 241226 SWEA 집합과 조합론 (1) | 2024.12.27 |
| 241225 SWEA 논리와 증명 (2) (2) | 2024.12.25 |