
파이썬 개발 환경 설정
파이썬의 기본 함수와 문법
print() 함수import 문자료형(Data Types)과 변수
자료구조(Data Structures)
조건문과 반복문
함수(Functions)
클래스와 객체 지향 프로그래밍
파일 입출력
with 구문 사용하기예외 처리
try와 exceptelse와 finally유용한 라이브러리 소개
파이썬은 쉽고 강력한 프로그래밍 언어로, 데이터 분석, 웹 개발, 인공지능 등 다양한 분야에서 사용됩니다. 파이썬을 효과적으로 학습하고 사용하기 위해서는 올바른 개발 환경을 설정하는 것이 중요합니다.
Google Colab(코랩)은 구글에서 제공하는 클라우드 기반의 파이썬 개발 환경입니다. 인터넷만 연결되어 있다면 어디서든지 웹 브라우저를 통해 파이썬 코드를 작성하고 실행할 수 있습니다.
# 첫 번째 파이썬 코드 실행
print("안녕하세요, 파이썬 세계에 오신 것을 환영합니다!")
결과:
안녕하세요, 파이썬 세계에 오신 것을 환영합니다!
예시:
# 셀 1
a = 10
# 셀 2
print(a)
만약 셀 2를 먼저 실행하면 NameError가 발생합니다. 따라서 변수를 정의한 셀을 먼저 실행해야 합니다.
파이썬을 시작할 때 알아두면 좋은 기본 함수와 문법에 대해 알아보겠습니다.
print() 함수print() 함수는 화면에 출력을 하는 가장 기본적인 함수입니다. 문자열, 숫자, 변수 등 다양한 데이터를 출력할 수 있습니다.
print() 함수의 다양한 사용법기본 사용법
print("파이썬을 배우자!")
결과:
파이썬을 배우자!
여러 값 출력하기
print("나이:", 25)
결과:
나이: 25
sep 옵션 사용
print("서울", "부산", "대구", sep=" -> ")
결과:
서울 -> 부산 -> 대구
end 옵션 사용
\n으로 줄바꿈입니다.print("안녕하세요", end="! ")
print("반갑습니다")
결과:
안녕하세요! 반갑습니다
형식 문자열(format string) 사용
name = "철수"
age = 20
print(f"{name}의 나이는 {age}살입니다.")
결과:
철수의 나이는 20살입니다.
주석은 코드에 대한 설명이나 메모를 추가할 때 사용합니다. 파이썬에서는 실행에 영향을 주지 않으며, 코드의 가독성을 높여줍니다.
한 줄 주석
# 기호 뒤에 작성합니다.# 이 코드는 변수 a에 10을 할당합니다.
a = 10
여러 줄 주석
''' 또는 """ 사이에 여러 줄의 주석을 작성합니다.'''
작성자: 홍길동
작성일: 2023년 1월 1일
내용: 파이썬 주석 예제
'''
주의: 여러 줄 문자열로 인식될 수 있으므로 주의가 필요합니다.
import 문import 문은 파이썬에서 모듈(module)을 불러올 때 사용합니다. 모듈은 미리 작성된 함수와 변수를 포함한 파일로, 코드를 재사용하고 기능을 확장하는 데 도움이 됩니다.
전체 모듈 불러오기
import math
print(math.pi)
결과:
3.141592653589793
별칭(alias) 지정하기
import numpy as np
array = np.array([1, 2, 3])
print(array)
결과:
[1 2 3]
특정 함수만 불러오기
from math import sqrt
print(sqrt(16))
결과:
4.0
여러 함수 불러오기
from math import sin, cos, tan
print(sin(0), cos(0), tan(0))
결과:
0.0 1.0 0.0
모든 함수 불러오기
from math import *
print(factorial(5))
결과:
120
주의: 이렇게 하면 현재 네임스페이스에 많은 이름이 추가되어 충돌이 발생할 수 있습니다.
파이썬은 들여쓰기를 통해 코드 블록을 구분합니다. 이는 다른 언어의 중괄호 {}를 대신하며, 들여쓰기가 잘못되면 IndentationError가 발생합니다.
예시:
if True:
print("조건이 참입니다.")
print("여기는 동일한 블록입니다.")
else:
print("조건이 거짓입니다.")
잘못된 예시:
if True:
print("이것은 오류를 발생시킬 수 있습니다.")
print("들여쓰기가 일관되지 않습니다.") # IndentationError
파이썬에서는 다양한 자료형을 제공하며, 변수에 값을 저장할 때 그 자료형이 결정됩니다.
정수(Integer, int)
age = 25
print(type(age)) # 결과: <class 'int'>
실수(Floating-point, float)
pi = 3.1415
print(type(pi)) # 결과: <class 'float'>
문자열(String, str)
message = "안녕하세요"
print(type(message)) # 결과: <class 'str'>
불리언(Boolean, bool)
is_active = True
print(type(is_active)) # 결과: <class 'bool'>
type() 함수를 사용하여 변수의 자료형을 확인합니다.
number = 10
print(type(number)) # <class 'int'>
정수로 변환
s = "100"
n = int(s)
print(n, type(n)) # 100 <class 'int'>
실수로 변환
s = "3.14"
f = float(s)
print(f, type(f)) # 3.14 <class 'float'>
문자열로 변환
n = 256
s = str(n)
print(s, type(s)) # '256' <class 'str'>
불리언으로 변환
print(bool(0)) # False
print(bool(1)) # True
print(bool("")) # False
print(bool("abc")) # True
0, 빈 문자열 "", 빈 리스트 [] 등은 False로 변환됩니다.문자열은 문자의 집합으로, 파이썬에서 중요한 자료형 중 하나입니다.
큰따옴표 사용
greeting = "Hello, World!"
작은따옴표 사용
greeting = 'Hello, World!'
여러 줄 문자열
multiline = """여러 줄의
문자열을 작성할 때는
이렇게 합니다."""
인덱싱(Indexing): 문자열에서 특정 위치의 문자를 가져옵니다. 인덱스는 0부터 시작합니다.
s = "Python"
print(s[0]) # 'P'
print(s[-1]) # 'n' (뒤에서 첫 번째)
슬라이싱(Slicing): 문자열의 부분을 가져옵니다.
s = "Hello, World!"
print(s[0:5]) # 'Hello' (0부터 5전까지)
print(s[7:]) # 'World!' (7부터 끝까지)
print(s[:5]) # 'Hello' (처음부터 5전까지)
print(s[::2]) # 'Hlo ol!' (2칸씩 건너뜀)
문자열 연결(+ 연산자)
s1 = "파이썬"
s2 = "최고"
result = s1 + " " + s2
print(result) # '파이썬 최고'
문자열 반복(* 연산자)
s = "안녕"
print(s * 3) # '안녕안녕안녕'
len() 함수
s = "Hello"
print(len(s)) # 5
대소문자 변환
upper(): 모든 문자를 대문자로 변환
s = "python"
print(s.upper()) # 'PYTHON'
lower(): 모든 문자를 소문자로 변환
s = "PYTHON"
print(s.lower()) # 'python'
capitalize(): 첫 글자만 대문자로 변환
s = "hello world"
print(s.capitalize()) # 'Hello world'
title(): 각 단어의 첫 글자를 대문자로 변환
s = "hello world"
print(s.title()) # 'Hello World'
공백 제거
strip(): 양쪽 공백 제거
s = " hello "
print(s.strip()) # 'hello'
lstrip(): 왼쪽 공백 제거
s = " hello"
print(s.lstrip()) # 'hello'
rstrip(): 오른쪽 공백 제거
s = "hello "
print(s.rstrip()) # 'hello'
문자열 검색
find(): 특정 문자열이 처음 등장하는 위치 반환 (없으면 -1)
s = "hello world"
print(s.find("world")) # 6
print(s.find("Python")) # -1
index(): 특정 문자열이 처음 등장하는 위치 반환 (없으면 오류 발생)
s = "hello world"
print(s.index("world")) # 6
# print(s.index("Python")) # ValueError 발생
문자열 교체
replace(): 특정 문자열을 다른 문자열로 교체
s = "I like Java"
print(s.replace("Java", "Python")) # 'I like Python'
문자열 분리와 결합
split(): 구분자를 기준으로 문자열을 분리하여 리스트로 반환
s = "apple,banana,cherry"
fruits = s.split(",")
print(fruits) # ['apple', 'banana', 'cherry']
join(): 리스트의 문자열을 특정 구분자로 결합
words = ["Hello", "World"]
sentence = " ".join(words)
print(sentence) # 'Hello World'
문자열 검사
startswith(): 특정 문자열로 시작하는지 검사
s = "hello world"
print(s.startswith("hello")) # True
endswith(): 특정 문자열로 끝나는지 검사
s = "hello world"
print(s.endswith("world")) # True
문자열 포매팅
% 연산자 사용
name = "철수"
age = 20
print("이름: %s, 나이: %d" % (name, age))
str.format() 메서드 사용
print("이름: {}, 나이: {}".format(name, age))
f-문자열 (Python 3.6 이상)
print(f"이름: {name}, 나이: {age}")
# 사용자로부터 이름과 나이를 입력받아 환영 메시지를 출력하는 프로그램
# 사용자 입력 받기
name = input("이름을 입력하세요: ")
age = input("나이를 입력하세요: ")
# 입력된 나이 문자열을 정수로 변환
age = int(age)
# 환영 메시지 생성
message = f"안녕하세요, {name}님! 당신은 {age}살입니다."
# 메시지 출력
print(message)
실행 결과:
이름을 입력하세요: 영희
나이를 입력하세요: 21
안녕하세요, 영희님! 당신은 21살입니다.
데이터를 효율적으로 저장하고 관리하기 위해 파이썬에서는 다양한 자료구조를 제공합니다.
리스트는 순서가 있는 변경 가능한 자료구조로, 배열과 유사합니다.
# 리스트 생성
fruits = ["apple", "banana", "cherry"]
# 리스트 요소 접근
print(fruits[0]) # 'apple'
# 리스트 길이 확인
print(len(fruits)) # 3
# 리스트 요소 변경
fruits[1] = "blueberry"
print(fruits) # ['apple', 'blueberry', 'cherry']
append(): 리스트 끝에 요소 추가
fruits.append("orange")
print(fruits) # ['apple', 'blueberry', 'cherry', 'orange']
insert(): 특정 위치에 요소 삽입
fruits.insert(1, "banana")
print(fruits) # ['apple', 'banana', 'blueberry', 'cherry', 'orange']
remove(): 특정 값 제거
fruits.remove("banana")
print(fruits) # ['apple', 'blueberry', 'cherry', 'orange']
pop(): 특정 인덱스의 요소를 제거하고 반환
fruit = fruits.pop(2)
print(fruit) # 'cherry'
print(fruits) # ['apple', 'blueberry', 'orange']
sort(): 리스트 정렬
numbers = [3, 1, 4, 2]
numbers.sort()
print(numbers) # [1, 2, 3, 4]
reverse(): 리스트 순서 뒤집기
numbers.reverse()
print(numbers) # [4, 3, 2, 1]
numbers = [0, 1, 2, 3, 4, 5]
# 부분 리스트 얻기
print(numbers[1:4]) # [1, 2, 3]
# 처음부터 특정 위치까지
print(numbers[:3]) # [0, 1, 2]
# 특정 위치부터 끝까지
print(numbers[3:]) # [3, 4, 5]
# 모든 요소 복사
print(numbers[:]) # [0, 1, 2, 3, 4, 5]
# 간격을 두고 요소 선택
print(numbers[::2]) # [0, 2, 4]
튜플은 순서가 있지만 변경 불가능한(immutable) 자료구조입니다.
# 튜플 생성
point = (10, 20)
# 요소 접근
print(point[0]) # 10
# 튜플은 변경 불가
# point[0] = 30 # 오류 발생: TypeError
# 하나의 요소를 가진 튜플 (쉼표 필요)
single = (10,)
print(type(single)) # <class 'tuple'>
# 여러 변수에 값 할당 (언패킹)
x, y = point
print(x, y) # 10 20
# 튜플을 리스트로 변환
t = (1, 2, 3)
l = list(t)
print(l) # [1, 2, 3]
# 리스트를 튜플로 변환
l = [4, 5, 6]
t = tuple(l)
print(t) # (4, 5, 6)
집합은 중복을 허용하지 않고, 순서가 없는 자료구조입니다.
# 집합 생성
numbers = {1, 2, 3, 3, 4}
print(numbers) # {1, 2, 3, 4}
# 요소 추가
numbers.add(5)
print(numbers) # {1, 2, 3, 4, 5}
# 요소 제거
numbers.remove(3)
print(numbers) # {1, 2, 4, 5}
A = {1, 2, 3}
B = {3, 4, 5}
# 합집합
print(A.union(B)) # {1, 2, 3, 4, 5}
print(A | B) # {1, 2, 3, 4, 5}
# 교집합
print(A.intersection(B)) # {3}
print(A & B) # {3}
# 차집합
print(A.difference(B)) # {1, 2}
print(A - B) # {1, 2}
사전은 키(key)와 값(value)의 쌍으로 이루어진 자료구조입니다.
# 사전 생성
student = {"name": "철수", "age": 20, "major": "컴퓨터공학"}
# 값 접근
print(student["name"]) # '철수'
# 값 변경
student["age"] = 21
# 새로운 키-값 추가
student["grade"] = "A"
print(student)
# {'name': '철수', 'age': 21, 'major': '컴퓨터공학', 'grade': 'A'}
keys(): 모든 키 반환
print(student.keys()) # dict_keys(['name', 'age', 'major', 'grade'])
values(): 모든 값 반환
print(student.values()) # dict_values(['철수', 21, '컴퓨터공학', 'A'])
items(): 키-값 쌍 반환
print(student.items())
# dict_items([('name', '철수'), ('age', 21), ('major', '컴퓨터공학'), ('grade', 'A')])
get(): 키로 값 가져오기 (키가 없을 때 기본값 설정 가능)
print(student.get("name")) # '철수'
print(student.get("address")) # None
print(student.get("address", "주소 없음")) # '주소 없음'
pop(): 키로 값 제거하고 반환
grade = student.pop("grade")
print(grade) # 'A'
print(student) # 'grade' 키가 제거된 사전
프로그램의 흐름을 제어하기 위해 조건문과 반복문을 사용합니다.
if 조건식:
실행할 코드
elif 조건식:
실행할 코드
else:
실행할 코드
age = int(input("나이를 입력하세요: "))
if age >= 20:
print("성인입니다.")
elif age >= 13:
print("청소년입니다.")
else:
print("어린이입니다.")
for 문# 리스트 순회
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 문자열 순회
for char in "Python":
print(char)
range() 함수와 for 문range() 함수는 일정한 숫자 범위를 생성합니다.# 0부터 4까지 출력
for i in range(5):
print(i)
# 1부터 5까지 출력
for i in range(1, 6):
print(i)
# 1부터 10까지 2씩 증가
for i in range(1, 11, 2):
print(i)
while 문count = 0
while count < 5:
print(count)
count += 1
break와 continuebreak: 반복문을 즉시 종료합니다.continue: 현재 반복을 건너뛰고 다음 반복을 시작합니다.# break 예제
for i in range(10):
if i == 5:
break
print(i)
# continue 예제
for i in range(5):
if i == 2:
continue
print(i)
함수는 재사용 가능한 코드 블록으로, 특정 작업을 수행합니다.
def 함수이름(매개변수들):
실행할 코드
return 반환값
# 인사말 출력 함수
def greet(name):
print(f"안녕하세요, {name}님!")
# 함수 호출
greet("영희") # '안녕하세요, 영희님!'
def introduce(name, age=20):
print(f"이름: {name}, 나이: {age}")
introduce("철수") # '이름: 철수, 나이: 20'
introduce("영희", 25) # '이름: 영희, 나이: 25'
introduce(age=30, name="민수") # '이름: 민수, 나이: 30'
*args: 위치 인자를 튜플로 받음def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3)) # 6
print(sum_numbers(1, 2, 3, 4, 5)) # 15
**kwargs: 키워드 인자를 사전으로 받음def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="철수", age=20, city="서울")
결과:
name: 철수
age: 20
city: 서울
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # 120
# 일반 함수
def add(a, b):
return a + b
# 람다 함수
add_lambda = lambda a, b: a + b
print(add(2, 3)) # 5
print(add_lambda(2, 3)) # 5
map(), filter()와 함께 사용# 리스트의 각 요소에 2를 곱함
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled) # [2, 4, 6, 8, 10]
# 리스트에서 짝수만 필터링
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens) # [2, 4]
객체 지향 프로그래밍(OOP)은 데이터를 객체로 취급하여 프로그래밍하는 방식입니다.
class Person:
# 생성자 메서드
def __init__(self, name, age):
self.name = name
self.age = age
# 인스턴스 메서드
def greet(self):
print(f"안녕하세요, 저는 {self.name}입니다.")
# 객체 생성
person1 = Person("철수", 20)
person2 = Person("영희", 22)
# 메서드 호출
person1.greet() # '안녕하세요, 저는 철수입니다.'
person2.greet() # '안녕하세요, 저는 영희입니다.'
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
print(f"{self.name}가 멍멍!")
class Cat(Animal):
def speak(self):
print(f"{self.name}가 야옹!")
# 객체 생성 및 메서드 호출
dog = Dog("바둑이")
cat = Cat("나비")
dog.speak() # '바둑이가 멍멍!'
cat.speak() # '나비가 야옹!'
# 파일 열기 (쓰기 모드)
f = open("example.txt", "w")
# 파일에 내용 쓰기
f.write("Hello, World!\n")
f.write("파일 입출력 예제입니다.")
# 파일 닫기
f.close()
# 파일 열기 (읽기 모드)
f = open("example.txt", "r")
# 파일 내용 읽기
content = f.read()
print(content)
# 파일 닫기
f.close()
with 구문 사용하기with open("example.txt", "r") as f:
content = f.read()
print(content)
프로그램 실행 중 오류가 발생했을 때 이를 처리하여 프로그램이 종료되지 않도록 합니다.
try와 excepttry:
x = int(input("숫자를 입력하세요: "))
print(10 / x)
except ValueError:
print("유효한 숫자가 아닙니다.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
else와 finallyelse: 오류가 발생하지 않을 때 실행finally: 오류 발생 여부와 상관없이 항상 실행try:
f = open("example.txt", "r")
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
else:
content = f.read()
print(content)
f.close()
finally:
print("프로그램을 종료합니다.")
파이썬은 풍부한 표준 라이브러리와 외부 라이브러리를 제공합니다.
수학 계산을 위한 다양한 함수를 제공합니다.
import math
print(math.sqrt(16)) # 4.0
print(math.factorial(5)) # 120
print(math.sin(math.pi / 2)) # 1.0
날짜와 시간을 다룹니다.
import datetime
now = datetime.datetime.now()
print(now) # 현재 날짜와 시간
# 특정 날짜 생성
d = datetime.datetime(2023, 1, 1)
print(d)
난수를 생성합니다.
import random
print(random.random()) # 0.0 이상 1.0 미만의 실수
print(random.randint(1, 10)) # 1 이상 10 이하의 정수
print(random.choice(["가위", "바위", "보"])) # 리스트에서 랜덤 선택
이상으로 파이썬의 기초부터 핵심 개념까지 자세히 알아보았습니다. 각 개념마다 제공된 예제 코드를 직접 실행해 보면서 이해를 깊게 하고, 더 나아가 응용할 수 있기를 바랍니다.
잘 보았습니당