사용자 도구

사이트 도구


wiki:it:programming:python

파이썬 시작 가이드

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

1. 파이썬 개요

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

  • 고수준(high-level) 은 우수하다는 말이 아닌, 기계어보다 사람의 언어에 가깝다는 의미입니다.
  • 인터프리터(interpreted) 는 코드를 실행 시점에 한 줄씩 해석하여 실행하는 방식을 의미합니다.
  • 객체 지향(object-oriented) 은 프로그램을 객체들의 상호작용으로 구성하는 프로그래밍 패러다임을 의미합니다.

1) 파이썬의 특징

  • 쉬운 학습 곡선: 다른 언어에 비해 문법이 직관적이고 간결하여 빠르게 배울 수 있습니다.
  • 다양한 활용 분야: 웹 개발, 데이터 과학, 인공지능, 자동화, 게임 개발 등 광범위한 분야에서 사용됩니다.
  • 강력한 라이브러리 생태계: 수많은 내장 모듈과 외부 라이브러리(예: NumPy, Pandas, Django, Flask, TensorFlow)를 통해 복잡한 기능을 쉽게 구현할 수 있습니다.
  • 크로스 플랫폼: Windows, macOS, Linux 등 다양한 운영체제에서 동일하게 동작합니다.
  • 오픈 소스: 누구나 자유롭게 사용하고 기여할 수 있습니다.

2) 파이썬 개발 환경 설정

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

  • 파이썬 설치:
    1. 공식 웹사이트 (python.org)에서 최신 버전 다운로드.
    2. 설치 시 “Add Python to PATH” 옵션을 반드시 체크하여 환경 변수에 추가합니다.
  • 통합 개발 환경 (IDE) / 코드 에디터:
    1. PyCharm: 파이썬 개발에 특화된 강력한 IDE.
    2. VS Code: 가볍고 확장성이 뛰어난 코드 에디터 (파이썬 확장 설치 필요).
    3. Jupyter Notebook: 데이터 과학 및 대화형 개발에 유용.

2. 파이썬 기본 문법

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


1) 변수와 자료형

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

  • 기본 자료형:
    1. 정수 (Integer): age = 30
    2. 부동 소수점 (Float): pi = 3.14159
    3. 문자열 (String): name = “Alice” (작은따옴표 또는 큰따옴표 사용)
    4. 불리언 (Boolean): is_active = True (True 또는 False)
  • 변수 할당 예시:
# 정수형 변수
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)

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

  • for 반복문:
    1. 주로 리스트, 튜플, 문자열 등 반복 가능한(iterable) 객체의 요소를 하나씩 순회할 때 사용합니다.
# 리스트의 각 요소 출력
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)
  • while 반복문:
    1. 특정 조건이 참(True)인 동안 코드 블록을 반복 실행합니다.
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) 기본 매개변수와 가변 인자

  • 기본 매개변수:
    1. 함수 정의 시 매개변수에 기본값을 할당하여, 호출 시 해당 매개변수를 생략할 수 있게 합니다.
def introduce(name, age=30):
    print(f"이름: {name}, 나이: {age}")

introduce("이영희")       # 나이 생략 시 기본값 30 사용
introduce("박민준", 25) # 나이 지정 시 지정된 값 사용
  • 가변 인자 (*args, **kwargs):
  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) 컬렉션입니다. 대괄호 `[]`를 사용합니다.

  • 특징:
    1. 순서가 있습니다 (인덱싱 가능).
    2. 중복된 값을 허용합니다.
    3. 다양한 자료형을 함께 저장할 수 있습니다.
  • 주요 연산:
    1. append(): 요소 추가
    2. insert(): 특정 위치에 요소 삽입
    3. remove(): 요소 제거
    4. pop(): 특정 인덱스의 요소 제거 및 반환
    5. len(): 길이 반환
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) 컬렉션입니다. 소괄호 `()`를 사용합니다.

  • 특징:
    1. 리스트와 유사하지만, 한 번 생성되면 요소를 변경하거나 추가/삭제할 수 없습니다.
    2. 주로 데이터의 무결성을 보장해야 할 때 사용됩니다.
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) 컬렉션입니다. 중괄호 `{}`를 사용합니다.

  • 특징:
    1. 순서가 없습니다 (Python 3.7+부터는 삽입 순서 유지).
    2. 키는 고유해야 하며, 변경 불가능한 자료형(문자열, 숫자, 튜플)만 가능합니다.
    3. 값을 키를 통해 빠르게 검색할 수 있습니다.
  • 주요 연산:
    1. dict[key] = value: 요소 추가 또는 변경
    2. dict.get(key): 키에 해당하는 값 가져오기 (키가 없으면 None 반환)
    3. del dict[key]: 요소 제거
    4. dict.keys(): 모든 키 반환
    5. dict.values(): 모든 값 반환
    6. dict.items(): 모든 키-값 쌍 반환
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) 컬렉션입니다. 중괄호 `{}`를 사용하지만, 키-값 쌍이 아닌 단일 요소들을 저장합니다.

  • 특징:
    1. 순서가 없습니다.
    2. 중복된 요소를 허용하지 않습니다.
    3. 수학의 집합 연산(합집합, 교집합, 차집합)에 유용합니다.
  • 주요 연산:
    1. add(): 요소 추가
    2. remove(): 요소 제거
    3. union(): 합집합
    4. intersection(): 교집합
    5. difference(): 차집합
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 내용:
# 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}")

결론

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

  • 다음 학습 단계:
    1. 객체 지향 프로그래밍 (OOP): 클래스와 객체에 대해 학습합니다.
    2. 고급 데이터 구조: 스택, 큐, 트리, 그래프 등.
    3. 특정 라이브러리 학습:
      1. 웹 개발: Django, Flask
      2. 데이터 과학: NumPy, Pandas, Matplotlib
      3. 인공지능/머신러닝: TensorFlow, PyTorch, scikit-learn
    4. 실전 프로젝트: 작은 프로젝트를 직접 만들어보면서 배운 내용을 적용하고 문제 해결 능력을 키웁니다.

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

wiki/it/programming/python.txt · 마지막으로 수정됨: 저자 syjang0803

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki