| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 람다식
- 인프런
- 점프투파이썬
- 참조자
- 스택
- OOP
- 연산자오버로딩
- 제네릭프로그래밍
- 데이터사이언스
- 포인터
- 프로그래머스lv2
- 멤버함수로구현
- C++
- 유도클래스
- STL
- 깊은복사
- 동적바인딩
- 다형성
- 주피터
- 얕은복사
- 코딩테스트
- 코드잇
- 기본클래스
- python
- c++코딩테스트합격자되기
- 백준
- list comprehension
- 상속
- 11382번
- OpenCV
- Today
- Total
WjExplor Story
2025.09.25(화) - 1주차 1일차 강의 복습 본문
파이썬 데이터 분석 & 인공지능 첫걸음
1. 주피터 노트북 (Jupyter Notebook)
Download Success | Anaconda
Students & educators enjoy free access to Anaconda’s premium AI tools. Learn More This page is running A/B tests. A/B tests do not run for logged-in admins, to switch views, log out or open the site in incognito mode. ✖︎ Download Now Download Anacond
www.anaconda.com
2. 구글 코랩 (Google Colab)
3. 비주얼 스튜디오 코드 (VS Code)
오늘 강의는 구글 코랩을 기반으로 시작
구글 코랩에서 문단 단위를 셀이라고 부른다.
- 코드 셀
- 텍스트 셀(마크다운)

공부 단계이니 AI 지원 기능을 모두 해제

타자 칠 때마다 톡톡 튀는 정신 어지럽게 만드는 Power는 No Power로 진행
파이썬 변수와 자료형
1. 변수와 자료형
- 변수는 값을 저장(assign)하는 공간으로, `=` 기호로 값을 할당하다.
- `int()`, `str()` 등 함수를 사용해 자료형 변환이 가능.
x=5
문법에서 'x는 5랑 같다' 는 의미가 아니다.
x의 값을 5로 대입한다. = 는 대입 연산자.
= 기호는 같다(equal)가 아니라 저장한다(assign) 혹은 할당한다는 의미
텍스트 3을 정수 3으로 변환해야한다
어떻게 해야하나?
a를 숫자로 바꾸고 싶다면
a=3
print(int(a))
type(int(a)) # int
2. 연산자
- 산술 연산자: `+`, `-`, `*`, `/`, `//`, `%`, `**`,`/`(나누기), `//`(몫), `%`(나머지), `**`(거듭제곱)
- 비교 연산자: `==`, `!=`, `>`, `<`, `>=`, `<=` 등으로 값을 비교하다.
- 논리 연산자: `and`, `or`, `not`조건의 참/거짓을 조합
곱하기는 X 로 칭했으나 파이썬에서는 * (별표)를 써야한다.
나누기는 / (짝대기 하나) 기호이다.
나누기는 몫이랑 나머지가 나온는데
몫은 // 나머지는 % 로 알면 된다.
and 왼쪽과 오른쪽 모두 True -> True
or 왼쪽과 오른쪽 중 하나가 True -> True
not 반대
print() 함수
- `sep` 인자를 사용해 출력 값 사이의 구분자를 지정 가능. (예: `print(a, b, sep='-')`)
print("안녕","하세요) # 안녕 하세요
구분 단위가 공백단위
만일 공백이 싫을 경우
print("안녕","하세요", sep='') #안녕하세요
sep => separater
기본으로는 공백이 들어가는데 ''공백 인자를 선택해서 공백 없이 출력 가능
문자열을 구분하는 역할
print("Hello","World",sep='/')
#Hello/World
문자를 출력할 때 문자, 숫자 동시 출력할 때 따옴표도 많이 써야 하고
내 의사랑 상관없이 많이 써야할때
f-string 이란 : 문자열에서 변수를 편하게 쓰는 방법
- 문자열 안에서 변수를 간편하게 출력하는 기능을 제공하다.
- `print(f'변수는 {변수명}입니다')` 형태로 작성 가능
print(f'') 문자열 사이에 따옴표를 쓰면 문자열이 되고
변수를 쓰고 싶으면 {} 중괄호를 써서 변수를 쓰면 된다.
제어문
3. 조건문 (if 문)
조건문
조건에 따라 다른 행동을 하는 문장
- `if`, `elif`, `else`를 사용해 조건에 따라 다른 코드를 실행하다.
- `if 조건:` 뒤에는 반드시 콜론(`:`)과 들여 쓰기(공백 4칸)가 필요함.
- 간단한 분기는 `결과 = A if 조건 else B` 형태의 한 줄로 작성 가능.
if 조건식:
# 조건식이 True일 때 실행되는 코드 블록
elif 다른_조건식:
# 위 if가 False이고, 이 조건이 True일 때 실행
else:
# 위 모든 조건이 False일 때 실행
- : (콜론)을 잊지 말 것.
- 들여쓰기(Indentation): 블록은 보통 공백 4칸으로 들여쓰기. 탭/스페이스 혼용 금지.
- if, elif, else는 필요한 만큼 쓸 수 있지만, else는 0개 또는 1개만 사용합니다.
핵심 정리
- 기본 구조: `if` → (필요시)`elif` → (선택) `else`
- : (콜론)과 **들여 쓰기(공백 4칸)** 필수- 간단한 분기는 **조건부 표현식**으로 한 줄에 가능: `A if 조건 else B`- 자주 하는 실수: `=`(대입) vs `==`(비교), 콜론 누락, 들여쓰기 오류
문제 4. 한 줄 if문 기본
변수 x = 7일 때, x가 10 이상이면 "크다", 아니면 "작다"를 출력하는 한 줄 if문을 작성하세요.
x = 7
if(x>=10):
print('크다')
else:
print('작다')
x = 7
result = '크다' if n>=10 else '작다'
print(result)
print('크다' if n>=10 else '작다')
한 줄 if문 (조건부 표현식)
값_if_참일 때 if 조건 else 값_if_거짓일 때
조건이 A 일 때 A실행
그게 아니면 B 실행
A if 조건 else B
4. 반복문
반복할 때 쓰는 문법
구현하기 위해서 for / while
- `for 변수 in 반복대상:` : 시퀀스(리스트, 문자열 등)의 각 요소를 순회하며 코드를 반복 실행하다.
- `while 조건식:` : 조건식이 참(True)인 동안 코드를 무한히 반복 가능.
- `break`: 반복문을 즉시 중단하다.
- `continue`: 현재 반복을 건너뛰고 다음 반복을 시작하다.
for 변수 in 반복할_대상:
실행할 코드
while 조건식:
실행할 코드
while
특정 조건에 무한 반복되는 코드에 특화된
언젠가는 끝나는 조건으로 while 문을 시작해야 함
실수로 영원히 끝나지 않는 코드를 쓰면
때에 따라 컴퓨터를 강제 종료하면 되지만
회사컴퓨터 쓰다가 강제 종료 못하면 다른 사람도 같이 쓰는 컴퓨터를
셧다운 해야 하는 경우가 생길 수 있다.
중간에 멈추거나 유한한 조건을 멈춰야 한다.
반복문을 만나다가
break 즉시 종료
continue 이번 반복만 건너뛰고 다음 반복으로 진행
for i in range(1,10):
배열 1~9 까지 만들어진다.
if i == 3:
break
#바로 3이상부터 종료
if i == 3:
continue
# 3만 빼고 다시 반복문 진행
n = 0
n_sum = 0
while n <= 100:
n_sum = n_sum + n
n = n+2
print(n_sum)
구글 코랩 팁
구글 코랩에서 문장을 아래로 내리는 단축어는
'Alt' + '↓'
5. 함수
1. **함수 정의 (def)**
- `def 함수명(매개변수):` 형태로 특정 기능을 수행하는 코드 블록을 정의하다.
- `return` 키워드로 함수의 결괏값을 반환 가능.
- `return`이 없는 함수는 `None`을 반환하다.
2. **람다 함수 (lambda)**
- 한 줄로 간단한 함수를 정의하는 문법이다.
- `lambda 인자: 표현식` 형태로 작성하며, 복잡한 함수보다 간단한 기능에 주로 사용함.
- `map`, `filter` 등 다른 함수와 결합하여 코드의 가독성을 높이는 것이 가능.
3. **가변 인자 (*args, **kwargs)**
- `*args`: 정해지지 않은 개수의 인자를 튜플(tuple) 형태로 전달받다.
- `**kwargs`: 키워드=값 형태의 인자를 딕셔너리(dict) 형태로 전달받다.
- 함수 호출 시 리스트나 튜플 앞에 `*`를 붙이면, 각 요소를 개별 인자로 풀어서 전달 가능. (예: `add_all(*[1, 2, 3])`)
def(define: 정의하다)
함수이름을 작성
매개변수 => 함수에 넣어주는 값 input
output 결괏값은 return 결괏값으로 하면 된다.
return 은 print 가 아니다!
def add(x, y):
print(x+y)
#return x + y
a = add(3,5)
print('a의 값은',a) # a 의 값은 None
// 람다 함수
함수 만드는데 복잡하고 한 줄로 함수를 만드는 방법
lambda 인풋 : 아웃풋
// 여러 인자를 받는 *, ** 문법
유동적으로 처리해 주는 *args 문법
매개변수가 2개인 함수는
매개변수를 1개나 3개를 쓰면 오류가 난다
def add(x, y)
몇 개를 입력하던지 자연스럽게 더해야 하는 함수는
*args로 쓰면 편하다
**kwargs
딕셔너리 (dict) 형태로 받음
(이거 C++에서 역함수 같은 건가?)
//
문제 5번 질문
add_all = lambda *args : sum(args)
numbers_str = input()
numbers_list = list(map(int, numbers_str.split()))
add_all(numbers_list)
작성하였고
에러 코드는
TypeError : 'int' object is not callable으로 나옵니다.
---
문제 5번 해설
(*args)에서 args 말고 다른 이름도 상관없다. * 가 중요하다
* 가 가변 매개변수라는 것이다.
사용할 때는 *를 때고 사용하면 된다.
args를 사용할 때는 *를 때고 사용하면 된다.
---
# 문제 5. 가변 인자 합계
# *args를 사용하여 여러 숫자를 받아 모두 더한 결과를 반환하는 함수 add_all을 작성하세요.
# 단, 함수는 lambda를 사용해 구현하세요.
# 1. 람다 함수 정의: *args를 사용하여 여러 인자를 받고 sum()으로 합계를 반환합니다.
add_all = lambda *args: sum(args)
# 2. 사용자로부터 여러 숫자를 공백으로 구분하여 입력받습니다.
# 예: 10 20 30 40
numbers_str = input("더할 숫자들을 공백으로 구분하여 입력하세요: ")
# 3. 입력받은 문자열을 처리하여 정수 리스트로 변환합니다.
# -. split(): 문자열을 공백 기준으로 나누어 문자열 리스트를 만듭니다. (예: ['10', '20', '30'])
# - map(int,...): 리스트의 각 문자열을 정수로 변환합니다.
# - list(...): map 객체를 최종 리스트로 변환합니다. (예: [10, 20, 30])
numbers_list = list(map(int, numbers_str.split()))
# 4. add_all 함수를 호출하고 결과를 출력합니다.
# - *numbers_list: 리스트 앞에 *를 붙이면 리스트의 요소들을 개별적인 인자로 '풀어서' 함수에 전달합니다.
# 예: add_all(*[10, 20, 30])은 add_all(10, 20, 30)과 동일합니다.
print(add_all(*numbers_list))
//
문제 3. 문자열 길이 함수
문자열을 입력받아 문자열의 길이를 반환하는 함수 str_length(s)를 작성하세요.
#for 문으로 작성
def str_length(s):
length =0
for i in s:
length = length+1
return length
n = input(n)
str_length(n)
# 내가 기존에 작성한 코드
def str_length(s):
print(len(s))
n = input(n)
str_length(n)
자료구조
1. **리스트 (List)**
- 대괄호(`[]`)를 사용하며, 여러 값을 순서대로 저장하는 자료구조이다.
- `append()`(추가), `pop()`(제거 및 반환), `sort()`(정렬) 등 다양한 메서드를 제공하다.
- 대부분의 리스트 메서드는 원본 리스트를 직접 수정하며, `None`을 반환하므로 주의가 필요함.
- 슬라이싱(`[start:stop:step]`)을 통해 리스트의 일부를 잘라내거나 순서를 뒤집는 것이 가능.
2. **튜플 (Tuple)**
- 소괄호(`()`)를 사용하며, 리스트와 달리 생성 후 요소를 변경, 추가, 삭제할 수 없다 (immutable).
- 값을 안전하게 보관하고자 할 때 사용 가능.
3. **문자열 (String)**
- 작은따옴표(`'`)나 큰따옴표(`"`)로 묶어 표현하다.
- 리스트처럼 인덱싱과 슬라이싱이 가능하지만, 특정 문자를 직접 변경할 수는 없다.
- `split()`: 특정 구분자를 기준으로 문자열을 나누어 리스트를 반환하다.
- `strip()`: 문자열 양 끝의 공백이나 특정 문자를 제거하다.
// 리스트 딕셔너리 튜플
여러 가지 하나의 변수에 순서대로 저장할 수 있는 자료형
대괄호 [] 안에 주머니처럼 묶어서 표현
리스트도 반복문으로 사용할 수 있다.
for a in [1,2,3,4]:
print(a)
#1 => 하나하나를 원소라고 한다.
2
3
4
리스트에서만 사용할 수 있는 메서드(함수)
슬라이싱
3개씩 건너뛰면
[::3]
뒤에서부터 한 개씩 하려면
[::-1]
fruits = ["apple", "banana", "cherry", "apple", "banana", "grape"]
print(fruits [-1:])
은 'grape'만 나오는데 마이너스 인덱스는 하나만 나오나요? ** 잘못작성함 **
원하는 게 뒤부터 나오는 거면
print(fruits [::-1])
이렇게 작성했어야 한다.
fruits = ["apple", "banana", "cherry", "apple", "banana", "grape"]
print(fruits [::-1])
마이너스 인덱스인 경우에는 첫 번째부터 시작한다고 파악하자. 1번이랑 -1이랑 다른 거 같음
## 튜플
[] -> 리스트
{} -> 딕셔너리
() -> 튜플
튜플 편법으로 추가는 가능하다
a = (1,2,3,4,5)
a = list(a)
a.append(6)
tuple(a)
튜플에 원소를 넣어서 사용하면 된다
리스트에서 변경하고 추가 후 튜플로 다시 바꾸면 된다.
튜플을 거의 안 쓰기도 한다.
list의 메서드의 대부분은 리턴값이 없다.
a = [1,2,3,4]
a = a.append(5)
print(a) # None
a.append(6,7,8) # 안된다.
# 원소 한 개씩 추가해야 한다.
# 한 번에 여러 개 출력하고 싶으면
# 리스트를 만들어서
a = a + [6,7,8]
이렇게 하면 된다.
오직 pop 만이 return 값이 있다.
a = a.pop
print(a) #5
pop()의 기본값은 -1이다.
print(a.sort()) # None
a = a.sort()
print(a)
이렇게 작성해야 한다.
// 문자열 //
리스트랑 동일하다.
출력하고 싶은 문장이
민수는 "야!"라고 말했다
print(민수는 "야!"라고 말했다")
이러면 오류가 난다.
출력해야 하는 큰 따옴표가 있다면 작은따옴표로
print('민수는 "야!"라고 말했다')
2) 인덱싱(Indexing)과 슬라이싱(Slicing)
표를 꼭 입력할 것
나도 잘 몰랐음..
"A _B_C". split('_')
#['A ', 'B', 'C']
Q> 그럼 이걸. strip()으로 어떻게 씀?
split("_")의 결과는 ['A ', 'B', 'C']로 리스트(list) 이기 때문에
메서드 문자열(string) 에만 사용할 수 있는 strip()는 사용할 수 없다.
올바른 방법은 리스트의 각 요소(문자열) 마다 'strip()' dmf wjrdydgodi gksek.
text = "A _B_C"
parts = text.split("_")
stripped_parts = [part.strip() for part in parts]
print(stripped_parts)
--
n = input()
print(type(n)) # str
숫자를 작성해도 문자열로 입력하기 때문에
숫자를 입력받고 싶다면 int로 치환해야 한다.
---
문제 8번 람다까지 좋은 예제로 보임
pandas 표 데이터 나올 때
복잡한 데이터를 나오지 않고
연속적인 데이터가 많아서
lambda 함수로 많이 사용함.
다음 주에 많이 사용 예정
lambda 연습 많이 할 것
인터넷에서 서치 할 때 lambda를 많이 사용함
다른 사람들도 많이 쓰기도 함
lambda를 쓰면 코딩 잘해 보임 ㅎㅎ
----
문제 10. 람다 함수
리스트 [1, 2, 3, 4, 5]에서 각 원소를 제곱한 새로운 리스트를 map과 lambda를 사용하여 만드세요.
numbers = [1,2,3,4,5]
map_object = map(lambda x : x**2 , numbers)
# print(map_object)
# map 객체를 리스트로 변환해야 우리가 원하는 새로운 리스트가 된다.
squared_numbers = list(map_object)
print(squared_numbers)'AI 엔지니어 부트캠프 > 파이썬 데이터 분석 기초와 머신 러닝 기초' 카테고리의 다른 글
| 2025.09.26(화) - 1주 2일차 강의 복습 (3) - 객체와 클래스 (0) | 2025.09.26 |
|---|---|
| 단어장 만들기 (0) | 2025.09.26 |
| 숫자 맞히기 게임 (0) | 2025.09.26 |
| 2025.09.26(화) - 1주 2일차 강의 복습 (2) - 파이썬 응용 (0) | 2025.09.26 |
| 2025.09.26(화) - 1주 2일차 강의 복습 (1) - 파이썬 기초 문법 문제 풀이 (0) | 2025.09.26 |