2026. 7. 16. 16:19ㆍAI 기반 프론트엔드 웹개발자 양성과정

[Anaconda, Python] 가상환경 세팅 · 파이썬 기초 문법
+ 데이터 수집
2026.07.16 · 학습 범위: Anaconda, Python 01~17, 데이터 수집(공개 데이터)
📋 오늘 다룬 것들
웹(HTML·CSS·JS·React)을 지나 드디어 Python에 들어갔다. 오늘은 프로젝트별로 환경을 분리하는 Anaconda 가상환경부터 세팅하고, 변수 타입·연산·리스트·조건문·반복문·함수·클래스·람다까지 파이썬 기초 문법 17개를 예제로 손에 익혔다. 마지막엔 AI 학습의 출발점인 데이터 수집(공개 데이터)도 정리했다. 자바스크립트와 비교하면 문법이 훨씬 간결하고 들여쓰기로 블록을 나누는 게 인상적이었다.
🐍 Anaconda — 가상환경 관리
집 안에 주방·화장실·거실이 목적별로 나뉘어 있듯, 프로젝트마다 필요한 라이브러리와 버전이 다르다. Anaconda는 프로젝트별로 독립된 "방(가상환경)"을 만들어 서로 간섭 없이 깔끔하게 분리해 주는 관리자다.
설치 확인 · 가상환경 생성
# 설치 확인 conda --version python --version # 가상환경 생성 (형식: conda create -n 이름 python=버전) conda create -n cv_env python=3.10 conda create -n nlp_env python=3.9
환경 활성화 · 목록 · 삭제
conda activate cv_env # 환경 켜기 conda deactivate # 환경 끄기 conda env list # 환경 목록 conda env remove -n cv_env # 환경 삭제
패키지 관리 (pip)
pip install package-name # 설치 pip install package==1.2.3 # 특정 버전 pip install -r requirements.txt # 파일에서 한꺼번에 pip install --upgrade package # 업그레이드 pip list # 설치 목록
conda env export > environment.yml로 내 환경을 파일로 뽑아 두면, 팀원은 conda env create -f environment.yml 한 줄로 똑같은 환경을 복원한다. pip 쪽은 pip freeze > requirements.txt, 또는 실제 import한 것만 뽑는 pipreqs를 쓴다.
🐍 Python 기초 문법 (01~17)
01 — 변수 타입 (9가지 기본 타입)
변수는 값을 담는 이름표 붙은 상자. 데이터 종류에 따라 상자 모양(타입)이 다르다.
x = 10 # int 정수 y = 3.14 # float 실수 name = 'Python' # str 문자열 is_fun = True # bool 참/거짓 colors = ['red', 'green'] # list 순서O, 수정O coords = (10, 20) # tuple 순서O, 수정X person = {'name': 'Tom'} # dict 키-값 쌍 nums = {1, 2, 3} # set 중복X, 순서X nothing = None # NoneType 값 없음
snake_case, 클래스는 PascalCase. JS에서 쓰던 camelCase는 파이썬에선 비권장이다. 이름은 영문·숫자·_만, 숫자로 시작 불가, 예약어(if·for·class 등) 금지. 타입 확인은 type(x) 또는 isinstance(x, int).
02 — 기초 연산
a, b = 5, 2 a / b # 2.5 나눗셈 a // b # 2 몫 a % b # 1 나머지 a ** b # 25 거듭제곱 'Hello' + 'World' # HelloWorld (이어붙이기) 'Hello' * 2 # HelloHello (반복) score = 0 score += 1 # score = score + 1 의 짧은 표현
03 — 리스트 (List)
순서 있음 · 수정 가능 · 중복 허용. 인덱싱/슬라이싱과 메서드로 다룬다.
colors = ['red', 'green', 'blue'] colors[0] # 'red' 첫 번째 colors[-1] # 'blue' 마지막 colors[1:3] # ['green', 'blue'] 슬라이싱 colors.append('pink') # 끝에 추가 colors.insert(3, 'white') # 특정 위치 삽입 colors.remove('red') # 값으로 제거 nums = [8, 5, 3, 2, 7] nums.sort() # 오름차순 nums.sort(reverse=True) # 내림차순 2 in nums # True 포함 여부
04 — f-string
문자열 앞에 f를 붙이고 { } 안에 변수·표현식을 넣는 최신 포맷 방식(3.6+).
name, age = 'King', 99 print(f"저는 {name}입니다. 나이는 {age}살.") print(f"{a} + {b} = {a + b}") # 표현식 삽입 print(f"소수점 2자리: {3.14159:.2f}") # 3.14 포맷 지정
05 — 조건문 (if / elif / else)
위에서부터 조건을 확인해 처음 맞는 하나만 실행한다. 블록은 들여쓰기로 구분.
temperature = 28 if temperature >= 30: print("덥다! 반팔 입기") elif temperature >= 20: print("딱 좋아! 가볍게 입기") # 28 >= 20 → 여기 실행 else: print("추워! 코트 입기")
06 — 반복문 for (+ enumerate)
mixed = [1, "Hello", 3.14, True] for item in mixed: print(item) # enumerate — 인덱스 + 값 동시에 for index, item in enumerate(mixed): print(f"index: {index}, item: {item}")
07 — zip() : 두 리스트 짝짓기
따로 떨어진 두 리스트를 지퍼처럼 같은 자리끼리 묶는다. for문과 짝꿍.
names = ["뽀삐", "초코", "쿠키"] scores = [95, 88, 72] for name, score in zip(names, scores): print(f"{name} : {score}") list(zip(names, scores)) # [('뽀삐',95), ('초코',88), ...] dict(zip(keys, values)) # {'이름':'홍길동', ...}
zip()은 짝짓기만 하고, 결과를 담는 그릇만 다르다. list(zip(...))은 줄 세우기라 번호로 꺼내고(pairs[0]), dict(zip(...))은 이름표 붙이기라 이름으로 꺼낸다(person["이름"]). 길이가 다르면 짧은 쪽 기준으로 끝난다.
08~10 — 외부 라이브러리 (pyfiglet · termcolor)
pyfiglet은 글자를 큼직한 아스키 아트로, termcolor는 글자에 색·배경·스타일을 입힌다. 둘을 조합하면 컬러 아스키 아트가 된다.
import pyfiglet from termcolor import colored py_text = pyfiglet.figlet_format("Hello") # 아스키 아트로 color_text = colored(py_text, "white", "on_blue", ["bold"]) print(color_text) # 색 입힌 아스키 아트 # colored(문자열, 글자색, 배경색, attrs=[스타일])
11 — 함수 (def)
자주 쓰는 코드를 이름표 붙여 묶은 재사용 상자. 독스트링·타입 힌트로 설명서를 붙인다.
def good_sentence(sentence: str) -> None: """입력 문자열을 pyfiglet 형식으로 출력. 반환: None""" print(pyfiglet.figlet_format(sentence)) good_sentence("Hello, Hancom")
: str는 매개변수 타입 힌트(받을 값 자료형), -> None은 반환 타입 힌트(돌려줄 값 자료형, def 줄 끝에 화살표로). 강제는 아니지만 잘못된 타입을 미리 알려주는 안내판이다.
12 — 반환 (return)
print는 그냥 화면에 보여줄 뿐이고, return은 결과를 바깥으로 건네줘 변수에 담아 다른 곳에서도 쓰게 한다.
def highlight(text, color): return colored(text, color) # 꾸민 텍스트를 돌려줌 results = highlight("YUN", "yellow") print(results)
13 — 예외 처리 (try / except)
오류가 날 수 있는 코드는 try에, 오류 시 할 일은 except에. 오류가 없으면 except는 건너뛴다.
user_input = input("미터 값을 입력: ") try: meters = float(user_input) # 숫자 변환 시도 print(f"{meters}m는 {meters*3.28084}ft") except ValueError: print("숫자를 입력해주세요.") # 변환 실패 시
14 — 반복문 (while)
조건이 True인 동안 계속 반복. break는 즉시 탈출하는 멈춤 버튼.
while True: user_input = input("미터 값: ") try: meters = float(user_input) print(f"{meters}m 변환 완료") break # 성공하면 루프 종료 except ValueError: print("숫자를 입력해주세요")
15 — 파일 입출력 (with)
센서 수전이 자동으로 잠기듯, with는 블록이 끝나면 파일을 자동으로 닫아 준다.
# "w" 새로 쓰기(덮어쓰기), "r" 읽기, "a" 이어 쓰기 with open("memo.txt", "w", encoding="utf-8") as f: f.write("안녕, 파이썬!\n") with open("memo.txt", "r", encoding="utf-8") as f: print(f.read()) # 블록을 빠져나오면 파일은 알아서 닫힘
"w" 새로 쓰기(기존 덮어씀) · "r" 읽기 · "a" 이어 쓰기(끝에 덧붙임). 한글은 encoding="utf-8" 명시 권장.16 — 클래스 (class)
붕어빵 틀로 같은 모양을 여러 개 찍어내듯, 정보(속성)와 행동(메서드)을 한 통에 묶는 설계도다.
class Dog: # 설계도(틀) def __init__(self, name, age): # 생성자 — 만들 때 자동 실행 self.name = name # 속성(변수) self.age = age def bark(self): # 메서드(함수) print(f"{self.name}: 멍멍!") dog1 = Dog("뽀삐", 3) # 객체(인스턴스) 생성 dog1.bark() # 뽀삐: 멍멍!
dog1_name·dog2_name… 변수가 폭발한다. 클래스는 한 마리의 정보 + 행동을 한 묶음(self)으로 만들어, 1000마리든 같은 틀로 깔끔하게 관리한다. 핵심 단어: class(틀) · 객체(찍은 것) · self.속성(정보) · 메서드(행동) · __init__(준비 단계).
17 — 람다 (lambda)
긴 편지 대신 짧은 쪽지. 함수를 한 줄로 줄여 쓰는 방법으로, 한 번 쓰고 버리는 간단한 일에 어울린다.
# 양식: 함수명 = lambda 매개변수 : 반환값 def add(a, b): # 일반 함수 (여러 줄) return a + b add = lambda a, b : a + b # 람다 (한 줄) — 결과 동일 print(add(7, 3)) # 10
📊 데이터 수집 (공개 데이터)
AI가 무언가를 배우려면 예시 사진·영상이 많이 필요하다. 아이가 수많은 예시를 보며 "이게 강아지"를 배우듯. 오늘은 인터넷에서 무료로 데이터를 가져오는 공개 데이터 소스를 정리했다(대개 CSV·JSON으로 다운로드 가능).
대표 공개 데이터 소스 5
✍️ 마치며
웹을 하다 파이썬으로 넘어오니 문법이 확실히 간결하게 느껴졌다. 세미콜론도, 중괄호도 없이 들여쓰기로 블록을 나누는 게 처음엔 어색했지만 금세 읽기 편해졌다. 특히 zip()으로 두 리스트를 묶고 dict로 이름표를 붙이는 부분, 그리고 클래스가 "정보 + 행동을 한 통에 묶는다"는 개념이 오늘 가장 크게 남았다. 환경(Anaconda)부터 문법, 그리고 데이터 수집까지 — AI로 가는 길의 출발선에 선 느낌이다. 다음엔 수집한 데이터를 실제로 다뤄볼 예정이다.
🏷️ Python | Anaconda | 데이터 | 학습일지 | AI
'AI 기반 프론트엔드 웹개발자 양성과정' 카테고리의 다른 글
| [260721 16일차] YOLO 심화 (0) | 2026.07.22 |
|---|---|
| [260720 15일차] Data, YOLO (0) | 2026.07.20 |
| [260715 13일차] Vercel, Claude Web (0) | 2026.07.15 |
| [260714 12일차] Node·Express, Groq API (0) | 2026.07.14 |
| [260713 11일차] Mini Project #3 (1) | 2026.07.13 |