| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- computer vision
- Baekjoon
- Linux
- Python
- CPP
- Optimization
- Machine Learning
- Robocup@Home 2026
- Humble
- do it! 알고리즘 코딩테스트: c++편
- Multimedia
- CNN
- Operating System
- paper review
- Seoul National University
- ROS2
- RNN
- cs231n
- Data Science
- Gentoo2
- deep learning
- 밑바닥부터 시작하는 딥러닝2
- BFS
- file system
- DFS
- SQLD
- C++
- Process
- On-memory file system
- System Call
Archives
- Today
- Total
newhaneul
[Advanced Python Programming] 중간고사 암기 본문
4. University Study/Advanced Python Programming
[Advanced Python Programming] 중간고사 암기
뉴하늘 2026. 4. 17. 19:03728x90
포스팅은 인하대학교 허혜선 교수님의 [202601-EEC3408-001] 고급파이썬프로그래밍을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.
- Lecture 7. Special Methods
- 파이썬에는 객체에 대하여 +, -, *, /와 같은 연산을 적용하도록 돕는 특수 메소드(special method)가 있다.
- x + y: __add__(self, y)
- x - y: __sub__(self, y)
- x * y: __mul__(self, y)
- x / y: __truediv__(self, y)
- x // y: __floordiv__(self, y)
- x % y: __mod__(self, y)
- x ** y: __pow__(self, y)
- x > y: __gt__(self, y)
- x >= y: __ge__(self, y)
- x < y: __lt__(self, y)
- x <= y: __le__(self, y)
- x == y: __eq__(self, y)
- x != y: __ne__(self, y)
- 파이썬에는 객체에 대하여 +, -, *, /와 같은 연산을 적용하도록 돕는 특수 메소드(special method)가 있다.

- Lecture 8. datetime 모듈 문제
- datetime.datetime.now()
- datetime.date.today()
- datetime.datetime(year=, month=, day=)
- datetime.date(year=,month=,day=)
- datetime.timedelta(weeks=,days=,hours=,minutes=,seconds=)
- ~.replace(year=,month=,day=)

import datetime
today = datetime.datetime.now()
print(f"오늘의 날짜: {today.year}년 {today.month}월 {today.day}일")
hour = today.hour
if hour >= 12:
pmam = "오후"
else:
pmam = "오전"
if hour == 0:
hour = 12
elif hour > 12:
hour -= 12
print(f"현재시간: {pmam} {hour}시 {today.minute}분 {today.second}초")

import datetime
y, m, d = map(int, input().split())
today = datetime.datetime(year=y, month=m, day=d)
plus100 = today + datetime.timedelta(days=99)
print(f"100일 기념일은: {plus100.year}년 {plus100.month}월 {plus100.day}일입니다.")
- datetime.timedelta() 메서드는 days, hours ... s로 끝나는거 항상 주의!

import datetime
today = datetime.date.today()
xMas = datetime.date(today.year, 12, 25)
gap = xMas - today
print(f"오늘 날짜: {today}")
print(f"크리스마스까지 {gap.days}일 남았습니다.")
- Lecture 8. time 모듈 문제
- time.time()
- 반환값: 실수
- time.time()

import time
start_time = time.time()
total = 0
for i in range(1000001):
if i % 2 == 0:
total += i
end_time = time.time()
print(f"계산 결과: {total}")
print(f"작업 소요 시간: {end_time - start_time}")
- Lecture 8. random 모듈 문제
- random.random(): 0 이상 1 미만 사이의 임의의 실수를 반환한다.
- 반환값: 실수
- random.randrange(n, m, [step]): n 이상 m 미만의 지정된 범위 내 임의의 정수를 반환하며, 간격을 지정할 수도 있다.
- 반환값: 정수
- random.randint(a, b): a 이상 b 이하 사이의 임의의 정수를 반환한다.
- 반환값: 정수
- random.choice(list): 인자로 들어온 시퀀스로부터 임의의 요소 하나를 선택하여 반환한다.
- 반환값: list 요소
- random.shuffle(list): 인자로 주어진 시퀀스의 요소를 매번 다른 순서로 랜덤하게 섞는다.
- 반환값: None
- random.sample(list, a): 시퀀스의 원소들 중에서 임의로 a개를 고른다.
- 반환값: list
- random.random(): 0 이상 1 미만 사이의 임의의 실수를 반환한다.
- Lecture 9. 파일 모드
- "r": 읽기 모드(read mode): 파일의 처음부터 읽는다.
- "w": 쓰기 모드(write mode): 파일의 처음부터 쓴다. 파일이 없으면 생성된다. 만약 파일이 존재하면 기존의 내용은 지워진다.
- "a": 추가 모드(append mode): 파일의 끝에 쓴다. 파일이 없으면 생성된다.
- "r+": 읽기와 쓰기 모드: 파일의 내용을 유지한 채 처음부터 쓴다. 읽고 쓸 수 있는 모드이다. 모드를 변경하려면 seek()가 호출되어야 한다.
- "b": 바이너리 모드(binary mode): 텍스트가 아닌 이미지, 영상 등의 이진 파일을 읽고 쓸 때 기존 모드에 붙여서 사용한다. (예: rb, wb)
- Lecture 10. try except else finally 구문 출력 결과 이해
- try 구문은 단독으로 사용할 수 없으며, 반드시 except 구문 또는 finally 구문과 함께 사용해야 한다.
- else 구문은 반드시 except 구문 뒤에 사용되어야한다.
- 1. try + except
- 2. try + except + else
- 3. try + except + finally
- 4. try + except + else + finally
- 5. try + finally
- Lecture 10. Error 종류
- SyntaxError: 파이썬의 기본 문법을 지키지 않았을 때 발생한다. (예: 괄호의 짝을 맞추지 않거나, if문이나 for문 끝에 콜론(:)을 빼먹었을 때)
- ValueError: 정수 아닌 값 입력하는 경우
- IndexError: 리스트의 인덱스를 넘는 숫자를 입력하는 경우
- ZeroDivisionError: 수학적으로 불가능한, 어떤 숫자를 0으로 나누는 연산을 시도할 때 발생한다.
- TypeError: 서로 다른 자료형끼리 허용되지 않는 연산을 시도할 때 발생한다. (예: 숫자와 문자열을 덧셈 기호로 더하려고 할 때)
- KeyError: 딕셔너리(Dictionary) 자료형에서 존재하지 않는 키(Key) 값을 찾으려고 할 때 발생한다.
- NameError: 선언하거나 정의하지 않은 변수나 함수 이름을 사용할 때 발생한다. 코드에 오타가 났을 때 가장 흔하게 볼 수 있다.
def test():
print("test() 함수의 첫 줄입니다.")
try:
print("try 구문이 실행되었습니다.")
return
print("try 구문의 return 키워드 뒤입니다.")
except:
print("except 구문이 실행되었습니다.")
else:
print("else 구문이 실행되었습니다.")
finally:
print("finally 구문이 실행되었습니다.")
print("test() 함수의 마지막 줄입니다.")
test()
test() 함수의 첫 줄입니다.
try 구문이 실행되었습니다.
finally 구문이 실행되었습니다.
print("프로그램이 시작되었습니다.")
while True:
try:
print("try 구문이 실행되었습니다.")
break
print("try 구문의 break 키워드 뒤입니다.")
except:
print("except 구문이 실행되었습니다.")
finally:
print("finally 구문이 실행되었습니다.")
print("while 반복문의 마지막 줄입니다.")
print("프로그램이 종료되었습니다.")
프로그램이 시작되었습니다.
try 구문이 실행되었습니다.
finally 구문이 실행되었습니다.
프로그램이 종료되었습니다.
def tricky_test():
print("1. 함수 시작")
try:
print("2. try 블록 실행")
raise ValueError("에러 발생!")
print("3. 에러 발생 이후")
except ValueError:
print("4. except 블록 실행")
return "except에서 반환"
else:
print("5. else 블록 실행")
return "else에서 반환"
finally:
print("6. finally 블록 실행")
return "finally에서 반환"
result = tricky_test()
print(f"7. 최종 결과: {result}")
1. 함수 시작
2. try 블록 실행
4. except 블록 실행
6. finally 블록 실행
7. 최종 결과: finally에서 반환
def loop_test():
print("반복문 시작")
for i in range(3):
try:
print(f"try: {i}")
if i == 1:
continue
if i == 2:
break
finally:
print(f"finally: {i}")
print("반복문 종료")
loop_test()
반복문 시작
try: 0
finally: 0
try: 1
finally: 1
try: 2
finally: 2
반복문 종료
- Lecture 11. Numpy 난수 생성 방법
- np.array(list): 1차원 ndarray 배열 생성
- 반환값: ndarray
- np.append(a, b, axis = ): 축을 기준으로 a ndarray 배열에 b ndarray를 추가
- 반환값: ndarray
- np.random.rand(a, b): a x b 난수 행렬 생성
- 반환값: ndarray
- np.random.randint(a, b, size=(c, d)): a~b-1까지의 범위를 갖는 정수 c x d 난수 행렬 생성
- 반환값: ndarray
- np.zeros((n, m)): 모든 값이 0인 n x m 행렬
- 반환값: ndarray
- np.ones((n, m)): 모든 값이 1인 n x m 행렬
- 반환값: ndarray
- np.full((n, m), x): 초기 값이 x인 n x m 행렬
- 반환값: ndarray
- np.eye(n): n x n 크기의 단위 행렬
- 반환값: ndarray
- np.linspace(start, stop, num): start에서 stop 사이의 간격을 균등하게 num으로 나눈다.
- 반환값: ndarray
- np.logspace(start, stop, num): start에서 stop 사이의 간격을 로그 스케일로 num개 만큼 나눈다.
- 반환값: ndarray
- np.arange(a, b, [step]): a에서 b-1까지의 1차원 행렬 생성
- 반환값: ndarray
- np.linalg.solve(a, b): 연립방정식의 해를 계산
- 반환값: ndarray
- np.linalg.det(a): a 행렬의 행렬식 계산
- 반환값: 실수
- np.where(condition): 조건을 만족하는 요소들의 인덱스를 튜플 형태로 반환
- 반환값: 튜플 ex: (array([3, 4]),)
- np.array(list): 1차원 ndarray 배열 생성
arr2d = np.array([[10, 20, 30],
[40, 50, 60]])
# 40 이상인 값의 인덱스 찾기
result2d = np.where(arr2d >= 40)
print("결과:", result2d)
결과: (array([1, 1, 1]), array([0, 1, 2]))
첫 번째 배열 array([1, 1, 1])은 행(row)의 인덱스를 나타낸다.
두 번째 배열 array([0, 1, 2])는 열(column)의 인덱스를 나타낸다.
- np.delete(arr, obj, axis = None): 배열에서 특정 위치(인덱스)의 요소를 삭제할 때 사용한다.
- 반환값: 새롭게 만들어진 배열
- np.isin(arr, elements): 배열의 각 요소가 특정 값들의 집합에 포함되어 있는지 한번에 확인할 때 사용하는 함수
- 반환값: True, False로 이루어진 ndarray
- Lecture 11. 행렬 곱 연산
- np.matmul(a, b)
- a @ b
- np.dot(a, b): a와 b가 2차원 행렬일때부터 동일 (1차원 행렬인 경우에는 내적)
- Lecture 11. Numpy Indexing, Slicing





import numpy as np
a = np.arange(0, 16).reshape(4, 4)
print(a[:, 1])
print(a[2, 1:])
print(a[:2, :2])
print(a[1:3, 1:3])
[ 1 5 9 13]
[ 9 10 11]
[[0 1]
[4 5]]
[[ 5 6]
[ 9 10]]
import numpy as np
a = np.arange(0, 16).reshape(4, 4)
print(a[:2, :3].flatten())
print(a[2:, :].flatten())
print(a[[1, 3], 1:].flatten())
[0 1 2 4 5 6]
[ 8 9 10 11 12 13 14 15]
[ 5 6 7 13 14 15]

import numpy as np
print("난수 정수 행렬 생성:")
a = np.random.randint(1, 101, size = (5, 3))
print(a)
b = a[:, 1] >= 60
print(b)
c = np.array(a[b])
print(c)
난수 정수 행렬 생성:
[[23 39 90]
[49 51 39]
[44 90 4]
[60 26 10]
[ 8 83 28]]
[False False True False True]
[[44 90 4]
[ 8 83 28]]

import numpy as np
p1 = np.array([1, 5, 10])
p2 = np.array([2, 4, 6])
d = np.sqrt(np.sum(np.pow(p1 - p2, 2)))
print(d)
4.242640687119285
728x90
'4. University Study > Advanced Python Programming' 카테고리의 다른 글
| [Advanced Python Programming] Lecture 13. Data Visualization (0) | 2026.05.25 |
|---|---|
| [Advanced Python Programming] Lecture 12. Pandas (0) | 2026.05.24 |
| [Advanced Python Programming] Lecture 11. Numpy (0) | 2026.04.17 |
| [Advanced Python Programming] Lecture 10. Exception Handling (1) | 2026.04.17 |
| [Advanced Python Programming] Lecture 9. File Input/Output (0) | 2026.04.17 |