Python 시작하기 - 프로그래밍의 가장 친절한 입문

“프로그래밍을 배우고 싶은데 어떤 언어부터 시작해야 할까요?”

프로그래밍을 처음 시작하는 사람들이 가장 많이 하는 질문입니다. 그리고 전 세계 개발자 커뮤니티에서 가장 많이 추천되는 답은 “Python”입니다. 참고

왜일까요? Python은 마치 사람이 말하는 것처럼 읽힙니다. 다른 언어들이 복잡한 기호와 문법으로 가득할 때, Python은 거의 영어 문장처럼 보입니다.

예를 들어, 리스트에서 짝수만 찾는다고 해봅시다.

# Python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]

이게 전부입니다. “numbers에서 num을 하나씩 가져와서, num이 2로 나눠떨어지면 가져와”라고 읽히죠.

같은 작업을 Java로 하면:

// Java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = new ArrayList<>();
for (Integer num : numbers) {
    if (num % 2 == 0) {
        evenNumbers.add(num);
    }
}

코드가 3배 더 길고, 타입 선언에 신경 써야 하고, 보일러플레이트(boilerplate)가 많습니다.

이것이 Python이 “배우기 쉬운” 언어로 불리는 이유입니다. 하지만 “쉽다”는 것이 “장난감”이라는 의미는 아닙니다. YouTube, Instagram, Spotify, Netflix - 이들은 모두 Python을 핵심적으로 사용합니다.

왜 Python을 배워야 할까요?

1. 가장 빠르게 생산적이 될 수 있는 언어

많은 대학의 프로그래밍 입문 과정에서 Java나 C++을 가르칩니다. “Hello, World!”를 출력하려면 이런 코드를 작성해야 합니다.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

초보자 입장에서 “public”, “static”, “void”가 뭔지 이해해야 합니다. 많은 강사들이 “지금은 몰라도 돼, 나중에 배워”라고 하지만, 이는 학습을 방해하는 요소입니다.

Python은 다릅니다.

print("Hello, World!")

이게 전부입니다. 바로 이해되고, 바로 실행됩니다.

이 단순함이 학습 곡선을 극적으로 낮춥니다. Stack Overflow의 2023 개발자 설문조사에 따르면, Python은 초보자들이 가장 많이 선택하는 언어 1위였습니다.

2. 가장 다양한 분야에서 사용

“Python으로 뭘 할 수 있나요?”라는 질문에 답은 “거의 모든 것”입니다.

웹 개발:

  • Django, Flask로 웹사이트 구축
  • Instagram, Spotify의 백엔드

데이터 과학 & AI:

  • Pandas로 데이터 분석
  • TensorFlow, PyTorch로 AI 모델 개발
  • 거의 모든 AI 연구 논문의 코드가 Python

자동화:

  • 지루한 작업 자동화
  • 웹 스크래핑
  • 파일 처리

게임 개발:

  • Pygame으로 2D 게임

과학 계산:

  • NumPy, SciPy로 복잡한 계산
  • NASA, CERN에서 사용

Python을 배우면 “이거 자동화할 수 있을 것 같은데?”라는 생각이 자주 들게 됩니다. 그리고 실제로 대부분의 반복 작업은 Python으로 자동화할 수 있습니다.

3. 방대한 라이브러리와 커뮤니티

Python의 가장 큰 자산은 PyPI (Python Package Index)입니다. 50만 개 이상의 패키지가 등록되어 있습니다.

원하는 기능이 있으면, 누군가 이미 만들어뒀을 확률이 높습니다.

  • 웹 스크래핑? → requests, BeautifulSoup
  • 엑셀 작업? → openpyxl, pandas
  • 이미지 처리? → Pillow
  • PDF 생성? → reportlab
  • API 호출? → requests

다른 언어였다면 직접 구현해야 할 것들을, Python에서는 pip install로 해결합니다.

pip install requests

4. 취업 시장에서의 수요

“Python 배우면 취업이 잘 될까요?”

2024년 기준, 개발자 채용 공고에서 Python은 상위 3위 안에 듭니다. 특히:

  • 데이터 분석가: Python 필수
  • AI/ML 엔지니어: Python 필수
  • 백엔드 개발자: Python 우대
  • DevOps 엔지니어: Python 스크립팅 활용

평균 연봉도 높은 편입니다. Indeed의 2024 데이터에 따르면, Python 개발자 평균 연봉이 다른 언어 대비 15-20% 높습니다.

먼저, 기초부터 이해하기

Python이란 무엇인가?

Python은 1991년 Guido van Rossum이 만든 고수준 프로그래밍 언어입니다.

“고수준(high-level)”이란 무엇일까요? 컴퓨터가 직접 이해하는 기계어와 멀리 떨어져 있다는 뜻입니다. 대신 인간이 이해하기 쉬운 언어입니다.

저수준 (Low-level)    고수준 (High-level)
<------------------------------->
기계어  어셈블리  C  C++  Java  Python

왼쪽으로 갈수록 빠르지만 어렵고, 오른쪽으로 갈수록 느리지만 쉽습니다.

Python의 철학 - “The Zen of Python”

Python에는 철학이 있습니다. 터미널에서 이렇게 입력해보세요:

import this

출력:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>> 
...

핵심은 가독성(Readability)입니다. Python은 “코드는 쓰는 것보다 읽는 게 더 많다”는 철학을 가지고 있습니다.

실제로 Python 커뮤니티는 일관된 코드 스타일을 강조합니다. PEP 8이라는 스타일 가이드가 있고, 대부분의 Python 개발자가 따릅니다.

인터프리터 언어 vs 컴파일 언어

Python은 인터프리터 언어입니다. 이게 무슨 뜻일까요?

컴파일 언어 (C, Java 등)

소스 코드 작성
    ↓
컴파일 (기계어로 변환)
    ↓
실행 파일 생성
    ↓
실행

코드를 실행하기 전에 “빌드” 과정이 필요합니다.

인터프리터 언어 (Python)

소스 코드 작성
    ↓
바로 실행 (한 줄씩 해석)

Python은 코드를 작성하면 바로 실행할 수 있습니다. 빌드 과정이 없습니다.

장점:

  • 빠른 피드백 (코드 → 결과 즉시)
  • 실험하기 좋음 (REPL 환경)
  • 배포가 간단

단점:

  • 실행 속도가 컴파일 언어보다 느림
  • 실행 전까지 일부 에러를 발견 못함

하지만 대부분의 경우, 개발 속도가 실행 속도보다 중요합니다. 그리고 느리다고 해도 사용자가 체감할 정도는 아닙니다.

동적 타입 시스템

Python은 동적 타입(Dynamic Typing) 언어입니다.

정적 타입 언어 (Java, C++):

int number = 10;  // 타입을 명시해야 함
number = "hello"; // ❌ 에러! int에 문자열 불가

동적 타입 언어 (Python):

number = 10       # Python이 자동으로 int로 인식
number = "hello"  # ✅ 가능! 타입 변경 가능

장점:

  • 코드가 짧고 유연함
  • 빠른 프로토타이핑

단점:

  • 실행 전까지 타입 에러를 모름
  • IDE의 자동완성이 약함 (하지만 타입 힌트로 개선 가능)

최근에는 타입 힌트(Type Hints)를 사용해서 정적 타입의 이점을 가져올 수 있습니다.

def greet(name: str) -> str:
    return f"Hello, {name}!"

# IDE가 타입을 알고, 자동완성과 에러 체크 제공

Python 설치하고 시작하기

이론은 충분합니다. 이제 직접 설치하고 코드를 작성해봅시다!

1. Python 설치

Windows:

  1. python.org에서 최신 버전 다운로드
  2. 설치 시 “Add Python to PATH” 체크 (중요!)
  3. 설치 완료

macOS:

macOS에는 Python이 기본 설치되어 있지만, 버전이 오래됐을 수 있습니다.

# Homebrew로 최신 버전 설치
brew install python3

Linux:

대부분의 배포판에 기본 설치되어 있습니다.

# Ubuntu/Debian
sudo apt update
sudo apt install python3 python3-pip

# Fedora
sudo dnf install python3 python3-pip

2. 설치 확인

터미널에서:

python --version
# 또는
python3 --version

출력 예시:

Python 3.12.0

버전이 3.8 이상이면 좋습니다. Python 2는 2020년에 지원이 종료되었으므로, 반드시 Python 3를 사용하세요.

3. 첫 번째 프로그램 - REPL로 실험하기

Python의 대화형 쉘(REPL)을 실행해봅시다.

python
# 또는
python3

프롬프트가 나타납니다.

>>>

이제 코드를 입력하면 즉시 실행됩니다.

>>> print("Hello, Python!")
Hello, Python!

>>> 2 + 2
4

>>> name = "Alice"
>>> f"Hello, {name}!"
'Hello, Alice!'

>>> for i in range(3):
...     print(f"Count: {i}")
...
Count: 0
Count: 1
Count: 2

REPL은 실험하기 좋은 환경입니다. “이 코드가 어떻게 동작하지?”라는 궁금증이 생기면, 바로 REPL에서 테스트해보세요.

종료하려면:

>>> exit()

4. 첫 번째 스크립트 파일 작성

REPL은 실험용이고, 실제 프로그램은 파일로 저장합니다.

hello.py 파일을 만들어봅시다.

# hello.py
print("Hello, Python!")

name = input("What's your name? ")
print(f"Nice to meet you, {name}!")

age = int(input("How old are you? "))
print(f"Wow, {age} years old!")

if age >= 18:
    print("You're an adult!")
else:
    print("You're a minor!")

실행:

python hello.py

출력:

Hello, Python!
What's your name? Alice
Nice to meet you, Alice!
How old are you? 25
Wow, 25 years old!
You're an adult!

축하합니다! 첫 Python 프로그램을 만들었습니다!

5. IDE 선택하기

메모장으로도 코드를 작성할 수 있지만, IDE를 사용하면 훨씬 편합니다.

초보자 추천:

1) VS Code (가장 추천)

  • 무료, 가볍고, 확장성 좋음
  • Python 확장 설치 필요
  • 자동완성, 디버깅, 린팅 지원

설치:

  1. code.visualstudio.com 다운로드
  2. Python 확장 설치 (확장 탭에서 “Python” 검색)

2) PyCharm Community Edition

  • 무료 (Community 버전)
  • Python 전용 IDE
  • 모든 기능이 기본 탑재

3) Jupyter Notebook

  • 웹 브라우저 기반
  • 데이터 분석, 학습용으로 최고
  • 코드 + 결과 + 설명을 한 곳에
pip install jupyter
jupyter notebook

Python 기초 문법 - 빠르게 둘러보기

이제 Python의 핵심 문법을 빠르게 살펴봅시다. 깊게 들어가지는 않고, “이런 게 있구나” 정도만 파악하세요.

변수와 데이터 타입

# 정수 (int)
age = 25

# 실수 (float)
height = 175.5

# 문자열 (str)
name = "Alice"
message = 'Hello'  # 작은따옴표도 가능

# 불린 (bool)
is_student = True
is_working = False

# None (값이 없음)
result = None

# 타입 확인
print(type(age))  # <class 'int'>

컬렉션 (Collection)

# 리스트 (List) - 순서 있음, 변경 가능
fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits[0])  # "apple" (인덱스는 0부터)

# 튜플 (Tuple) - 순서 있음, 변경 불가
coordinates = (10, 20)
# coordinates[0] = 15  # ❌ 에러!

# 딕셔너리 (Dictionary) - 키-값 쌍
person = {
    "name": "Alice",
    "age": 25,
    "city": "Seoul"
}
print(person["name"])  # "Alice"

# 집합 (Set) - 중복 없음, 순서 없음
numbers = {1, 2, 3, 2, 1}  # {1, 2, 3}

연산자

# 산술 연산자
10 + 3   # 13
10 - 3   # 7
10 * 3   # 30
10 / 3   # 3.333... (항상 float)
10 // 3  # 3 (정수 나눗셈)
10 % 3   # 1 (나머지)
10 ** 3  # 1000 (거듭제곱)

# 비교 연산자
10 > 3   # True
10 == 3  # False
10 != 3  # True

# 논리 연산자
True and False  # False
True or False   # True
not True        # False

# 문자열 연산
"Hello" + " " + "World"  # "Hello World"
"Ha" * 3                  # "HaHaHa"

제어문

# if-elif-else
score = 85

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
else:
    print("F")

# for 반복문
for i in range(5):  # 0, 1, 2, 3, 4
    print(i)

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# while 반복문
count = 0
while count < 5:
    print(count)
    count += 1

함수

# 기본 함수
def greet(name):
    return f"Hello, {name}!"

message = greet("Alice")
print(message)  # "Hello, Alice!"

# 기본값 매개변수
def greet(name, greeting="Hello"):
    return f"{greeting}, {name}!"

print(greet("Bob"))              # "Hello, Bob!"
print(greet("Bob", "Hi"))        # "Hi, Bob!"

# 여러 값 반환
def get_min_max(numbers):
    return min(numbers), max(numbers)

minimum, maximum = get_min_max([1, 2, 3, 4, 5])
print(minimum, maximum)  # 1 5

리스트 컴프리헨션 (List Comprehension)

Python의 강력한 기능 중 하나입니다.

# ❌ 전통적 방식
squares = []
for i in range(10):
    squares.append(i ** 2)

# ✅ 리스트 컴프리헨션
squares = [i ** 2 for i in range(10)]

# 조건 추가
even_squares = [i ** 2 for i in range(10) if i % 2 == 0]
# [0, 4, 16, 36, 64]

한 줄로 복잡한 로직을 표현할 수 있습니다!

실전 예제 - 실제로 유용한 프로그램

이론은 충분합니다. 실제로 쓸모 있는 프로그램을 만들어봅시다.

예제 1: 파일 읽기/쓰기

# 파일 쓰기
with open("data.txt", "w") as file:
    file.write("Hello, File!\n")
    file.write("This is Python.\n")

# 파일 읽기
with open("data.txt", "r") as file:
    content = file.read()
    print(content)

# 줄 단위로 읽기
with open("data.txt", "r") as file:
    for line in file:
        print(line.strip())  # strip()으로 개행문자 제거

with를 사용할까?

with는 파일을 자동으로 닫아줍니다. 다음 두 코드는 동일합니다.

# ❌ 수동으로 닫기 (잊어버리기 쉬움)
file = open("data.txt", "r")
content = file.read()
file.close()  # 깜빡하면 문제!

# ✅ with 사용 (자동으로 닫힘)
with open("data.txt", "r") as file:
    content = file.read()
# 여기서 자동으로 닫힘

예제 2: CSV 파일 처리

import csv

# CSV 쓰기
data = [
    ["Name", "Age", "City"],
    ["Alice", 25, "Seoul"],
    ["Bob", 30, "Busan"],
    ["Charlie", 35, "Daegu"]
]

with open("people.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(data)

# CSV 읽기
with open("people.csv", "r") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

# 딕셔너리 형태로 읽기 (더 편함)
with open("people.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(f"{row['Name']} is {row['Age']} years old")

예제 3: 웹 스크래핑 (간단한 API 호출)

import requests
import json

# GitHub API 호출
response = requests.get("https://api.github.com/users/github")

if response.status_code == 200:
    data = response.json()
    print(f"Name: {data['name']}")
    print(f"Followers: {data['followers']}")
    print(f"Public Repos: {data['public_repos']}")
else:
    print(f"Error: {response.status_code}")

먼저 라이브러리 설치:

pip install requests

예제 4: 데이터 분석 (Pandas 맛보기)

import pandas as pd

# 데이터프레임 생성
data = {
    "Name": ["Alice", "Bob", "Charlie", "David"],
    "Age": [25, 30, 35, 40],
    "City": ["Seoul", "Busan", "Daegu", "Incheon"],
    "Salary": [50000, 60000, 70000, 80000]
}

df = pd.DataFrame(data)

# 데이터 보기
print(df)

# 통계 정보
print(df.describe())

# 필터링
high_earners = df[df["Salary"] > 60000]
print(high_earners)

# 정렬
sorted_df = df.sort_values("Age", ascending=False)
print(sorted_df)

설치:

pip install pandas

예제 5: 자동화 - 폴더 내 파일 정리

import os
import shutil
from pathlib import Path

def organize_files(directory):
    """
    파일을 확장자별로 폴더에 정리
    """
    directory = Path(directory)

    # 확장자별 폴더 매핑
    file_types = {
        "Images": [".jpg", ".jpeg", ".png", ".gif"],
        "Documents": [".pdf", ".docx", ".txt", ".xlsx"],
        "Videos": [".mp4", ".avi", ".mov"],
        "Music": [".mp3", ".wav", ".flac"]
    }

    for file in directory.iterdir():
        if file.is_file():
            # 확장자 확인
            extension = file.suffix.lower()

            # 적절한 폴더 찾기
            for folder, extensions in file_types.items():
                if extension in extensions:
                    # 폴더 생성 (없으면)
                    target_folder = directory / folder
                    target_folder.mkdir(exist_ok=True)

                    # 파일 이동
                    shutil.move(str(file), str(target_folder / file.name))
                    print(f"Moved {file.name} to {folder}/")
                    break

# 사용
organize_files("./Downloads")

다운로드 폴더가 지저분하다면, 이 스크립트로 깔끔하게 정리할 수 있습니다!

함정과 주의사항

Python은 쉽지만, 초보자가 자주 빠지는 함정들이 있습니다.

1. 인덴테이션 (들여쓰기)

Python은 중괄호 {} 대신 들여쓰기로 코드 블록을 구분합니다.

# ✅ 올바른 들여쓰기
if True:
    print("This is correct")
    print("Still in the if block")

# ❌ 잘못된 들여쓰기
if True:
print("This will error")  # IndentationError

# ❌ 혼재된 들여쓰기
if True:
    print("Tab")
        print("Too much indent")  # 에러!

규칙:

  • 스페이스 4칸 사용 (PEP 8 권장)
  • 탭과 스페이스를 섞지 말 것
  • IDE가 자동으로 해주므로, 신경 쓸 일은 적음

2. 가변 객체와 참조 - 가장 헷갈리는 개념

Python의 일부 객체는 변경 가능하고, 일부는 변경 불가능합니다. 하지만 더 중요한 것은 변수가 값을 저장하는 방식입니다.

불변 객체 (Immutable) - 숫자, 문자열, 튜플

x = 10
y = x       # y는 x의 값(10)을 복사
y = 20      # y를 새로운 값으로 변경
print(x)    # 10 (x는 영향 없음)

메모리 관점:

처음:
x → [10]
y → [10]  (10이라는 값을 새로 참조)

y = 20 이후:
x → [10]
y → [20]  (20이라는 새 값을 참조)

숫자, 문자열, 튜플은 불변이므로, 값을 바꾸려면 새로운 객체를 만들어야 합니다.

가변 객체 (Mutable) - 리스트, 딕셔너리, 집합

여기가 함정입니다! 리스트는 변경 가능한 객체입니다.

list1 = [1, 2, 3]
list2 = list1       # ⚠️ 주의! list2는 list1의 복사본이 아님!
                    # list2와 list1이 같은 리스트를 가리킴

list2.append(4)     # list2에 4를 추가
print(list1)        # [1, 2, 3, 4] ← list1도 변했다!
print(list2)        # [1, 2, 3, 4]

왜 이런 일이?

list2 = list1리스트를 복사하는 게 아니라, 같은 리스트를 가리키는 또 다른 이름(별명)을 만드는 것입니다.

메모리 관점:

list1 = [1, 2, 3] 생성:
list1 → [1, 2, 3]  (메모리 주소: 0x1000)

list2 = list1:
list1 → [1, 2, 3]  (메모리 주소: 0x1000)
list2 → [1, 2, 3]  (메모리 주소: 0x1000) ← 같은 주소!

list2.append(4):
list1 → [1, 2, 3, 4]  (메모리 주소: 0x1000)
list2 → [1, 2, 3, 4]  (메모리 주소: 0x1000) ← 둘 다 변함!

list1과 list2는 같은 리스트를 가리키므로, 하나를 변경하면 다른 것도 변합니다.

해결 방법: 복사하기

리스트를 진짜로 복사하려면 .copy() 메서드를 사용하세요:

list1 = [1, 2, 3]
list2 = list1.copy()    # 새로운 리스트를 만들어서 복사
                        # 또는 list1[:] 도 같은 효과

list2.append(4)
print(list1)    # [1, 2, 3] ← 변하지 않음!
print(list2)    # [1, 2, 3, 4]

메모리 관점:

list1 = [1, 2, 3]:
list1 → [1, 2, 3]  (메모리 주소: 0x1000)

list2 = list1.copy():
list1 → [1, 2, 3]  (메모리 주소: 0x1000)
list2 → [1, 2, 3]  (메모리 주소: 0x2000) ← 다른 주소!

list2.append(4):
list1 → [1, 2, 3]      (메모리 주소: 0x1000) ← 안 변함
list2 → [1, 2, 3, 4]   (메모리 주소: 0x2000) ← 변함

확인 방법: id() 함수

두 변수가 같은 객체를 가리키는지 확인하려면 id() 함수를 사용하세요:

list1 = [1, 2, 3]
list2 = list1
list3 = list1.copy()

print(id(list1))  # 예: 140234567890
print(id(list2))  # 140234567890 ← list1과 같음!
print(id(list3))  # 140234567999 ← 다름!

# 또는 is 연산자
print(list1 is list2)  # True  (같은 객체)
print(list1 is list3)  # False (다른 객체)

딕셔너리도 마찬가지

dict1 = {"name": "Alice", "age": 25}
dict2 = dict1           # 같은 딕셔너리를 가리킴
dict3 = dict1.copy()    # 새로운 딕셔너리 복사

dict2["age"] = 30
print(dict1)  # {"name": "Alice", "age": 30} ← 변함!
print(dict3)  # {"name": "Alice", "age": 25} ← 안 변함

3. 기본 인자의 함정

# ❌ 위험한 코드
def add_item(item, items=[]):
    items.append(item)
    return items

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2] ← 엥? 왜 [2]가 아니지?
print(add_item(3))  # [1, 2, 3]

문제: 기본 인자 []는 함수 정의 시 한 번만 생성됩니다.

해결:

# ✅ 올바른 코드
def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

print(add_item(1))  # [1]
print(add_item(2))  # [2] ✅

4. 정수 나눗셈 vs 실수 나눗셈

# Python 3에서
10 / 3   # 3.333... (항상 float)
10 // 3  # 3 (정수 나눗셈)

# Python 2에서는 달랐음 (주의!)
# 10 / 3 = 3 (정수 나눗셈)

Python 2를 사용하는 레거시 코드를 볼 때 주의하세요.

5. 변수 스코프 (Scope)

x = 10  # 전역 변수

def func():
    x = 20  # 지역 변수 (전역 x와 다름!)
    print(x)

func()     # 20
print(x)   # 10

# 전역 변수 수정하려면
def func2():
    global x
    x = 30

func2()
print(x)   # 30

하지만 global은 가능한 피하는 게 좋습니다. 함수가 외부 상태를 변경하면 디버깅이 어려워집니다.

다음 단계 - 학습 로드맵

Python 기초를 배웠다면, 어떻게 발전해야 할까요?

Phase 1

목표: Python 문법 완전히 숙달

학습 내용:

  • 변수, 데이터 타입, 연산자
  • 제어문 (if, for, while)
  • 함수, 모듈
  • 리스트, 딕셔너리, 튜플, 집합
  • 파일 입출력

추천 자료:

실습:

  • 간단한 계산기 만들기
  • To-Do 리스트 CLI 앱
  • 숫자 맞추기 게임

Phase 2

목표: Python다운 코드 작성

학습 내용:

  • 객체지향 프로그래밍 (클래스, 상속)
  • 예외 처리 (try-except)
  • 리스트 컴프리헨션, 제너레이터
  • 데코레이터
  • 정규 표현식

추천 자료:

실습:

  • 간단한 웹 스크래퍼
  • CSV 데이터 분석 프로그램
  • 파일 자동화 스크립트

마치며

Python은 배우기 쉽지만, 그만큼 깊이도 있는 언어입니다. 처음에는 간단한 스크립트부터 시작해서, 점차 복잡한 시스템을 만들 수 있습니다.

핵심을 정리하면:

  1. 가독성: Python은 읽기 쉬운 코드를 강조
  2. 다양성: 웹, 데이터, AI, 자동화 등 모든 분야에서 사용
  3. 커뮤니티: 방대한 라이브러리와 활발한 커뮤니티
  4. 실용성: 빠르게 프로토타입을 만들고 실험 가능

첫 걸음을 떼는 방법:

  1. 오늘 Python 설치하기
  2. “Hello, World!” 출력하기
  3. 간단한 계산기 만들기
  4. 매일 30분씩 코드 작성하기

프로그래밍은 읽는 것이 아니라 하는 것입니다. 책을 100권 읽는 것보다, 프로그램 10개를 만드는 게 훨씬 도움이 됩니다.

실수해도 괜찮습니다. 에러 메시지는 적이 아니라 선생님입니다. 에러를 읽고, 구글링하고, 고치는 과정에서 실력이 늡니다.

다음 단계:

  • Python 설치하고 첫 프로그램 작성하기
  • 간단한 프로젝트 아이디어 정하기 (계산기, To-Do 리스트 등)
  • 매일 조금씩 코드 작성하기
  • 막히면 검색하고, 커뮤니티에 질문하기

Python의 세계에 오신 것을 환영합니다! 🐍

참고 자료

공식 문서

온라인 강의

  • 『Do it! 점프 투 파이썬』 - 초보자 추천
  • 『Effective Python』- 중급자 추천
  • 『Fluent Python』- 고급자 추천

연습 사이트

커뮤니티

댓글