목차

파이썬 시작 가이드

이 문서는 파이썬(Python) 프로그래밍 언어의 기본적인 개념부터 실제 활용 예제까지 다루는 종합 가이드입니다. 파이썬은 배우기 쉽고 강력하며 다양한 분야에서 활용되는 언어로, 초보자부터 숙련된 개발자까지 모두에게 유용합니다. 이 가이드를 통해 파이썬의 핵심 문법을 이해하고, 간단한 프로그램을 직접 작성할 수 있는 기반을 마련할 수 있습니다.

1. 파이썬 개요

파이썬은 1991년 귀도 반 로섬(Guido van Rossum)이 개발한 고수준(high-level), 인터프리터(interpreted), 객체 지향(object-oriented) 프로그래밍 언어입니다. 간결하고 읽기 쉬운 문법으로 유명하며, 다양한 운영체제에서 호환됩니다.


1) 파이썬의 특징


2) 파이썬 개발 환경 설정

파이썬 코드를 실행하기 위해서는 파이썬 인터프리터가 설치되어 있어야 합니다. 공식 웹사이트에서 다운로드하여 설치할 수 있습니다.

2. 파이썬 기본 문법

이 섹션에서는 파이썬 프로그래밍의 가장 기본적인 문법 요소들을 다룹니다.


1) 변수와 자료형

변수는 값을 저장하는 공간이며, 파이썬은 동적 타이핑(dynamic typing)을 지원하여 변수 선언 시 자료형을 명시할 필요가 없습니다.

# 정수형 변수
num_int = 10

# 부동 소수점 변수
num_float = 3.14

# 문자열 변수
text_str = "Hello, Python!"

# 불리언 변수
is_valid = True

print(num_int)
print(num_float)
print(text_str)
print(is_valid)

2) 연산자

파이썬은 다양한 종류의 연산자를 제공합니다.

연산자 종류 설명 예시 결과
산술 연산자 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지, 거듭제곱 5 + 2, 5 - 2, 5 * 2, 5 / 2, 5 % 2, 5 ** 2 7, 3, 10, 2.5, 1, 25
비교 연산자 두 값의 크기 비교 5 == 2, 5 != 2, 5 > 2, 5 < 2, 5 >= 2, 5 <= 2 False, True, True, False, True, False
논리 연산자 조건들을 조합 True and False, True or False, not True False, True, False
할당 연산자 변수에 값 할당 x = 10, x += 5 (x = x + 5) x는 10, x는 15

3) 조건문 (if, elif, else)

특정 조건에 따라 코드 블록을 실행할 때 사용합니다.

score = 85

if score >= 90:
    print("학점: A")
elif score >= 80:
    print("학점: B")
elif score >= 70:
    print("학점: C")
else:
    print("학점: D 또는 F")

4) 반복문 (for, while)

코드 블록을 여러 번 반복 실행할 때 사용합니다.

# 리스트의 각 요소 출력
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
    print(fruit)

# 0부터 4까지 출력 (range(5)는 0, 1, 2, 3, 4를 생성)
for i in range(5):
    print(i)
count = 0
while count < 5:
    print("Count:", count)
    count += 1 # count = count + 1

3. 함수

함수는 특정 작업을 수행하는 코드 블록을 묶어 재사용 가능하게 만든 것입니다.


1) 함수 정의 및 호출

`def` 키워드를 사용하여 함수를 정의하고, 함수 이름 뒤에 괄호를 붙여 호출합니다.

# 매개변수가 없는 함수
def greet():
    print("안녕하세요!")

greet() # 함수 호출

# 매개변수가 있는 함수
def greet_name(name):
    print(f"안녕하세요, {name}님!") # f-string 사용

greet_name("김철수") # 함수 호출

# 반환값이 있는 함수
def add(a, b):
    return a + b

result = add(5, 3)
print("덧셈 결과:", result)

2) 기본 매개변수와 가변 인자

def introduce(name, age=30):
    print(f"이름: {name}, 나이: {age}")

introduce("이영희")       # 나이 생략 시 기본값 30 사용
introduce("박민준", 25) # 나이 지정 시 지정된 값 사용
  1. *args: 개수 제한 없이 위치 인자를 받을 때 사용합니다. 튜플 형태로 전달됩니다.
  2. **kwargs: 개수 제한 없이 키워드 인자를 받을 때 사용합니다. 딕셔너리 형태로 전달됩니다.
def print_args(*args):
    print("위치 인자:", args)

print_args(1, 2, "hello")

def print_kwargs(**kwargs):
    print("키워드 인자:", kwargs)

print_kwargs(name="Alice", age=25)

4. 데이터 구조

파이썬은 데이터를 효율적으로 저장하고 관리하기 위한 다양한 내장 데이터 구조를 제공합니다.


1) 리스트 (List)

여러 개의 값을 순서대로 저장하는 변경 가능한(mutable) 컬렉션입니다. 대괄호 `[]`를 사용합니다.

my_list = [1, "hello", 3.14, True]
print("원본 리스트:", my_list)

my_list.append(5)
print("요소 추가 후:", my_list)

my_list.insert(1, "world")
print("요소 삽입 후:", my_list)

my_list.remove("hello")
print("요소 제거 후:", my_list)

popped_item = my_list.pop(0)
print("제거된 요소:", popped_item)
print("pop 후 리스트:", my_list)

print("리스트 길이:", len(my_list))

2) 튜플 (Tuple)

여러 개의 값을 순서대로 저장하는 변경 불가능한(immutable) 컬렉션입니다. 소괄호 `()`를 사용합니다.

my_tuple = (1, "apple", 3.14)
print("튜플:", my_tuple)

# 튜플은 변경 불가능하므로 다음 코드는 오류 발생:
# my_tuple[0] = 10
# my_tuple.append(5)

print("첫 번째 요소:", my_tuple[0])
print("튜플 길이:", len(my_tuple))

3) 딕셔너리 (Dictionary)

`키(key)`와 `값(value)`의 쌍으로 이루어진 변경 가능한(mutable) 컬렉션입니다. 중괄호 `{}`를 사용합니다.

my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print("원본 딕셔너리:", my_dict)

# 값 접근
print("이름:", my_dict["name"])
print("나이 (get 메서드):", my_dict.get("age"))

# 값 변경 및 추가
my_dict["age"] = 26
my_dict["job"] = "Engineer"
print("변경 및 추가 후:", my_dict)

# 요소 제거
del my_dict["city"]
print("요소 제거 후:", my_dict)

print("모든 키:", my_dict.keys())
print("모든 값:", my_dict.values())
print("모든 항목:", my_dict.items())

4) 세트 (Set)

중복되지 않는 요소들을 저장하는 변경 가능한(mutable) 컬렉션입니다. 중괄호 `{}`를 사용하지만, 키-값 쌍이 아닌 단일 요소들을 저장합니다.

my_set = {1, 2, 3, 4, 3, 2} # 중복 제거됨
print("원본 세트:", my_set)

my_set.add(5)
print("요소 추가 후:", my_set)

my_set.remove(1)
print("요소 제거 후:", my_set)

set1 = {1, 2, 3}
set2 = {3, 4, 5}

print("합집합:", set1.union(set2))
print("교집합:", set1.intersection(set2))
print("차집합 (set1 - set2):", set1.difference(set2))

5. 모듈과 패키지

모듈은 파이썬 코드를 담고 있는 파일(`.py` 확장자)이며, 패키지는 여러 모듈을 계층적으로 조직한 디렉토리입니다. 코드를 재사용하고 관리하기 쉽게 만들어줍니다.


1) 모듈 임포트

`import` 키워드를 사용하여 다른 모듈의 기능을 가져올 수 있습니다.

# math 모듈 전체 임포트
import math
print("파이:", math.pi)

# math 모듈에서 특정 함수만 임포트
from math import sqrt, ceil
print("루트 9:", sqrt(9))
print("올림 3.14:", ceil(3.14))

# 모듈에 별칭 부여
import random as rd
print("랜덤 숫자:", rd.randint(1, 10))

2) 사용자 정의 모듈

새로운 `.py` 파일을 생성하여 자신만의 모듈을 만들 수 있습니다. 예를 들어, `my_module.py` 파일을 만들고 그 안에 함수를 정의합니다.

# my_module.py
def hello(name):
    return f"안녕하세요, {name}님! (from my_module)"

MY_CONSTANT = 123
# main_script.py
import my_module

message = my_module.hello("DokuWiki")
print(message)
print("상수 값:", my_module.MY_CONSTANT)

6. 파일 입출력

파이썬을 사용하여 파일을 읽고 쓰는 방법을 알아봅니다.


1) 파일 열기 및 닫기

open() 함수를 사용하여 파일을 열고, close() 메서드로 파일을 닫습니다. with 문을 사용하면 파일을 자동으로 닫아주므로 더 안전하고 편리합니다.

모드 설명
'r' 읽기 모드 (기본값). 파일이 없으면 오류.
'w' 쓰기 모드. 파일이 없으면 생성, 있으면 내용 삭제 후 새로 작성.
'a' 추가 모드. 파일이 없으면 생성, 있으면 기존 내용 끝에 추가.
'x' 배타적 생성 모드. 파일이 있으면 오류, 없으면 생성.
'b' 바이너리 모드 (예: `'rb'`, `'wb'`).
't' 텍스트 모드 (기본값).
# 파일 쓰기 (기존 내용 덮어쓰기)
with open("example.txt", "w", encoding="utf-8") as file:
    file.write("첫 번째 줄입니다.\n")
    file.write("두 번째 줄입니다.\n")
print("example.txt 파일에 쓰기 완료.")

# 파일 읽기
with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print("\n--- example.txt 내용 ---")
    print(content)
print("example.txt 파일 읽기 완료.")

# 파일 추가 쓰기
with open("example.txt", "a", encoding="utf-8") as file:
    file.write("세 번째 줄이 추가되었습니다.\n")
print("example.txt 파일에 내용 추가 완료.")

# 다시 읽기
with open("example.txt", "r", encoding="utf-8") as file:
    lines = file.readlines() # 각 줄을 리스트로 반환
    print("\n--- example.txt 내용 (줄 단위) ---")
    for line in lines:
        print(line.strip()) # strip()으로 줄바꿈 문자 제거

7. 예외 처리

프로그램 실행 중 발생할 수 있는 오류(예외)를 처리하여 프로그램이 비정상적으로 종료되는 것을 방지합니다. try, except, finally 블록을 사용합니다.

try:
    # 잠재적으로 오류가 발생할 수 있는 코드
    num1 = int(input("첫 번째 숫자를 입력하세요: "))
    num2 = int(input("두 번째 숫자를 입력하세요: "))
    result = num1 / num2
    print(f"나눗셈 결과: {result}")

except ValueError:
    # ValueError 발생 시 처리
    print("오류: 유효한 숫자를 입력해주세요.")
except ZeroDivisionError:
    # ZeroDivisionError 발생 시 처리
    print("오류: 0으로 나눌 수 없습니다.")
except Exception as e:
    # 모든 예외를 잡는 일반적인 예외 처리
    print(f"예상치 못한 오류 발생: {e}")
finally:
    # 예외 발생 여부와 관계없이 항상 실행되는 코드
    print("예외 처리 블록이 종료되었습니다.")

8. 간단한 파이썬 예제

앞서 배운 개념들을 활용하여 간단한 프로그램을 만들어봅니다.


1) 사용자 입력과 조건문을 이용한 간단한 게임

사용자에게 숫자를 맞추는 게임을 만들어봅니다.

import random

secret_number = random.randint(1, 10)
attempts = 0

print("1부터 10 사이의 숫자를 맞춰보세요!")

while True:
    try:
        guess = int(input("숫자를 입력하세요: "))
        attempts += 1

        if guess < secret_number:
            print("더 큰 숫자입니다!")
        elif guess > secret_number:
            print("더 작은 숫자입니다!")
        else:
            print(f"정답입니다! {attempts}번 만에 맞추셨어요!")
            break
    except ValueError:
        print("유효한 숫자를 입력해주세요.")

2) 리스트와 반복문을 이용한 평균 계산기

여러 숫자의 평균을 계산하는 프로그램입니다.

def calculate_average(numbers):
    if not numbers: # 리스트가 비어있는지 확인
        return 0
    total = sum(numbers) # 내장 함수 sum() 사용
    return total / len(numbers)

# 사용자로부터 숫자 입력 받기
input_numbers_str = input("숫자들을 쉼표(,)로 구분하여 입력하세요: ")
# 문자열을 쉼표로 분리하고 각 부분을 정수로 변환
try:
    numbers_list = [int(num.strip()) for num in input_numbers_str.split(',')]
    
    avg = calculate_average(numbers_list)
    print(f"입력된 숫자들의 평균: {avg:.2f}") # 소수점 둘째 자리까지 표시
except ValueError:
    print("잘못된 입력입니다. 숫자를 쉼표로 구분하여 입력해주세요.")
except Exception as e:
    print(f"오류 발생: {e}")

결론

이 가이드를 통해 파이썬 프로그래밍의 기본적인 개념과 문법을 익히셨기를 바랍니다. 파이썬은 광범위한 분야에서 활용될 수 있는 강력한 도구이며, 이 가이드는 그 첫걸음일 뿐입니다.

꾸준한 연습과 탐구를 통해 파이썬 전문가로 성장하시길 응원합니다!