변수와 자료형

변수

데이터를 저장하는 메모리 공간

변수 선언 및 초기화

변수 선언은 변수를 생성하는 과정이고, 초기화는 변수에 초기 값을 할당하는 과정입니다. 파이썬에서는 변수를 선언할 때 명시적으로 데이터 타입을 지정하지 않으며, 값이 할당될 때 자동으로 데이터 타입이 결정됩니다.

 변수 선언 및 초기화 예제
x = 10  # 정수형 변수 선언 및 초기화
y = "Hello"  # 문자열 변수 선언 및 초기화
z = 3.14  # 부동 소수점 변수 선언 및 초기화

print(x)  # 10 출력
print(y)  # Hello 출력
print(z)  # 3.14 출력

기본 자료구조

1. 정수 (int)
정수(int)는 소수점이 없는 숫자입니다. 정수는 양수, 음수 및 0을 포함합니다.

a = 10
b = -5
c = 0

2. 부동 소수점 (float)
부동 소수점(float)은 소수점이 있는 숫자입니다. 실수를 표현하는 데 사용됩니다.

x = 3.14
y = -0.5
z = 0.0

3. 문자열 (str)
문자열(str)은 문자의 집합으로, 큰따옴표나 작은따옴표로 둘러싸인 텍스트입니다.

s1 = "Hello"
s2 = 'World'
s3 = "!"

4. 불리언 (bool)
불리언(bool)은 참(True) 또는 거짓(False)을 나타내는 자료형입니다.

is_true = True
is_false = False

컬렉션 자료구조

리스트 (List)

순서가 있는 변경 가능한 컬렉션

리스트는 대괄호[]로 정의되고, 각 요소는 쉼표로 구분됩니다.

fruit_tuple = ["apple", "banana", "cherry"]
number_tuple = [1, 2, 3, 4, 5]

튜플 (Tuple)

순서가 있는 변경 불가능한 컬렉션

튜플은 소괄호()로 정의되며, 각 요소는 쉼표로 구분됩니다.

fruit_tuple = ("apple", "banana", "cherry")
number_tuple = (1, 2, 3, 4, 5)

딕셔너리 (Dictionary)

키-값 쌍으로 이루어진 변경 가능한 컬렉션

딕셔너리는 순서가 없으며, 각 키는 고유해야 합니다.
딕셔너리는 중괄호({})로 정의되며, 각 키-값 쌍은 콜론(:)으로 구분됩니다.

person = {"name": "John", "age": 30, "city": "New York"}

집합 (Set)

순서가 없고 중복을 허용하지 않는 변경 가능한 컬렉션

집합은 중괄호({})로 정의되며, 각 요소는 쉼표로 구분됩니다.

fruits_set = {"apple", "banana", "cherry"}
numbers_set = {1, 2, 3, 4, 5}

제어문

프로그램의 흐름을 제어하는 데 사용되는 구조

조건에 따라 실행 경로를 결정하거나, 특정 코드를 반복해서 실행하는 등의 역할을 합니다. 파이썬에서 주로 사용되는 제어문에는 조건문과 반복문이 있습니다.

조건문

주어진 조건이 참인지 거짓인지에 따라 다른 코드를 실행하는 문장

  1. if 문:

    • 조건이 참일 때 코드를 실행합니다.
    x = 10
    if x > 5:
        print("x는 5보다 큽니다.")
  2. elif 문:

    • 이전 조건이 거짓이고 새로운 조건이 참일 때 코드를 실행합니다.
    x = 10
    if x > 15:
        print("x는 15보다 큽니다.")
    elif x > 5:
        print("x는 5보다 크고 15보다 작거나 같습니다.")
  3. else 문:

    • 이전 모든 조건이 거짓일 때 코드를 실행합니다.
    x = 3
    if x > 5:
        print("x는 5보다 큽니다.")
    else:
        print("x는 5보다 작거나 같습니다.")

반복문

특정 코드를 여러 번 반복해서 실행할 때 사용하는 문장

1. for 문:

  • 시퀀스(리스트, 튜플, 문자열 등)의 각 요소를 반복합니다.
    fruits = ["apple", "banana", "cherry"]
    for fruit in fruits:
        print(fruit)

2. while 문:

  • 주어진 조건이 참인 동안 코드를 반복합니다.
    count = 0
    while count < 5:
        print(count)
        count += 1

반복문 제어 (Loop Control)

반복문의 실행을 제어하기 위한 키워드

  1. break:

    • 반복문을 즉시 종료합니다.
    for i in range(10):
        if i == 5:
            break
        print(i)
  2. continue:

    • 현재 반복을 건너뛰고 다음 반복을 실행합니다.
    for i in range(10):
        if i % 2 == 0:
            continue
        print(i)
  3. pass:

    • 아무 동작도 하지 않습니다. 문법적으로 필요한 곳에서 빈 코드를 유지할 때 사용합니다.
    for i in range(5):
        if i == 3:
            pass
        else:
            print(i)

함수

특정 작업을 수행하는 코드 블록

함수를 사용하면 코드의 재사용성이 높아지고, 코드가 더 깔끔하고 읽기 쉬워집니다. 함수를 정의할 때는 def 키워드를 사용하고, 함수를 호출할 때는 함수 이름 뒤에 괄호를 사용합니다.

  • 매개변수
    함수 정의 시 함수에 전달되는 값을 받기 위해 사용되는 변수입니다.
  • 인수
    함수 호출 시 함수에 실제로 전달되는 값입니다.
def greet(name):  # name은 매개변수
    print("Hello, {name}!)"

greet("yoon")  # "Alice"는 인수

파일

  • 파일 열기: open() 함수를 사용하여 파일을 엽니다. 파일을 열 때 파일 경로와 모드를 지정합니다.
  • 파일 읽기: read(), readline(), readlines() 메서드를 사용하여 파일의 내용을 읽습니다.
  • 파일 쓰기: write(), writelines() 메서드를 사용하여 파일에 내용을 씁니다.
  • 파일 닫기: 파일 작업이 끝나면 close() 메서드를 사용하여 파일을 닫습니다. 또는 with 문을 사용하여 파일을 자동으로 닫을 수 있습니다.
# 파일 열기
file = open("example.txt", "r")

# 파일 읽기
content = file.read()
print(content)

# 파일 닫기
file.close()

# 파일 쓰기
file = open("example.txt", "w")
file.write("Hello, World!")
file.close()

# with 문을 사용한 파일 열기와 닫기
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

파일 모드 (r, w, a)

  • 파일을 열 때 사용하는 모드에는 여러 가지가 있습니다. 모드를 지정하여 파일을 읽기, 쓰기, 추가 모드로 열 수 있습니다.
  1. r (읽기 모드):

    • 파일을 읽기 전용으로 엽니다. 파일이 존재하지 않으면 오류가 발생합니다.
    with open("example.txt", "r") as file:
        content = file.read()
        print(content)
  2. w (쓰기 모드):

    • 파일을 쓰기 전용으로 엽니다. 파일이 존재하지 않으면 새로 생성하고, 존재하면 내용을 덮어씁니다.
    with open("example.txt", "w") as file:
        file.write("Hello, World!")
  3. a (추가 모드):

    • 파일을 쓰기 모드로 열되, 파일 끝에 내용을 추가합니다. 파일이 존재하지 않으면 새로 생성합니다.
    with open("example.txt", "a") as file:
        file.write("\nAppending text")

모듈과 패키지

모듈

파이썬 코드 파일로, 변수, 함수, 클래스 등을 정의하고 재사용할 수 있는 코드 집합

모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있습니다. 모듈을 사용하면 코드의 재사용성을 높이고, 코드 관리를 더 쉽게 할 수 있습니다.

모듈 사용하기
  • 모듈을 사용하려면 import 키워드를 사용하여 모듈을 불러옵니다.
# math 모듈을 import하여 사용
import math

result = math.sqrt(16)
print(result)  # 4.0 출력
모듈에서 특정 항목 가져오기
  • 모듈에서 특정 함수나 변수를 가져오려면 from ... import 구문을 사용합니다.
# math 모듈에서 sqrt 함수만 import하여 사용
from math import sqrt

result = sqrt(16)
print(result)  # 4.0 출력
모듈에 별칭 사용하기
  • 모듈 이름이 길거나 사용하기 불편할 때 별칭을 사용할 수 있습니다.
# math 모듈을 별칭 m으로 import하여 사용
import math as m

result = m.factorial(4)
print(result)  # 24 출력
사용자 정의 모듈
  • 사용자 정의 모듈은 직접 만든 파이썬 파일로, 이를 다른 파일에서 import하여 사용할 수 있습니다.
  • 예를 들어, my_module.py 파일을 만들어서 다음과 같이 사용할 수 있습니다.
# my_module.py 파일 내용
def greet(name):
    return f"Hello, {name}!"

# main.py 파일에서 my_module 모듈을 import하여 사용
import my_module

print(my_module.greet("yoon"))  # "Hello, yoon!" 출력

패키지

여러 모듈을 묶어 놓은 디렉토리

패키지는 모듈을 계층적으로 구성할 수 있게 하여, 코드의 구조를 체계적으로 관리할 수 있게 합니다. 패키지 디렉토리에는 __init__.py 파일이 포함되어 있어야 하며, 이 파일은 해당 디렉토리가 패키지임을 파이썬에 알립니다.

패키지 구조
  • 패키지는 디렉토리와 파일 구조로 구성됩니다. 예를 들어, 다음과 같은 패키지 구조를 가질 수 있습니다.
mypackage/
    __init__.py
    module1.py
    module2.py
패키지 사용하기
  • 패키지의 모듈을 import하여 사용할 수 있습니다.
# mypackage 패키지의 module1을 import하여 사용
from mypackage import module1

module1.some_function()

예외 처리

예외 처리(Exception Handling)는 프로그램 실행 중에 발생할 수 있는 오류를 감지하고, 이를 처리하여 프로그램이 예기치 않게 중단되지 않도록 하는 기법입니다. 이를 통해 오류 상황에서도 프로그램이 안정적으로 동작할 수 있게 합니다.

try

  • 예외가 발생할 가능성이 있는 코드를 포함합니다.
try:
    x = int(input("숫자를 입력하세요: "))  # 사용자 입력을 정수로 변환 시도
except ValueError:
    print("유효한 숫자가 아닙니다.")  # 정수가 아닌 값을 입력하면 예외 발생

except

  • 예외가 발생했을 때 실행할 코드를 포함합니다.
try:
    x = int(input("숫자를 입력하세요: "))  # 사용자 입력을 정수로 변환 시도
except ValueError:
    print("유효한 숫자가 아닙니다.")  # 정수가 아닌 값을 입력하면 예외 발생

else

  • 예외가 발생하지 않았을 때 실행할 코드를 포함합니다.
try:
    x = int(input("숫자를 입력하세요: "))  # 사용자 입력을 정수로 변환 시도
except ValueError:
    print("유효한 숫자가 아닙니다.")  # 정수가 아닌 값을 입력하면 예외 발생
else:
    print(f"입력한 숫자는 {x}입니다.")  # 예외가 발생하지 않으면 입력한 숫자 출력

finally

  • 예외 발생 여부와 관계없이 항상 실행할 코드를 포함합니다. 주로 자원 정리 작업에 사용됩니다.
try:
    x = int(input("숫자를 입력하세요: "))  # 사용자 입력을 정수로 변환 시도
except ValueError:
    print("유효한 숫자가 아닙니다.")  # 정수가 아닌 값을 입력하면 예외 발생
else:
    print(f"입력한 숫자는 {x}입니다.")  # 예외가 발생하지 않으면 입력한 숫자 출력
finally:
    print("프로그램 종료")  # 예외 발생 여부와 관계없이 항상 실행

객체지향프로그래밍

객체지향 프로그래밍 (OOP)

프로그램을 여러 개의 독립적인 객체(object)로 나누어 작성하는 프로그래밍 패러다임

각 객체는 데이터(속성)와 그 데이터를 조작하는 함수(메서드)로 구성됩니다. OOP는 코드의 재사용성, 확장성, 유지 보수성을 높이는 데 유용합니다.

  1. 클래스(Class)와 객체(Object)

    • 클래스: 객체를 생성하기 위한 설계도 또는 청사진입니다. 클래스는 객체의 속성(변수)과 메서드(함수)를 정의합니다.
    • 객체: 클래스의 인스턴스입니다. 실제로 메모리에 할당되어 동작하는 개체를 의미합니다.
    # 클래스 정의
    class Dog:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def bark(self):
            print(f"I am {self.name}!")
    
    # 객체 생성
    my_bordercollie = Dog("", 3)
     my_bordercollie.bark()  # "I am  my_bordercollie!" 출력
  2. 속성(Attributes)

    • 객체의 데이터(상태)를 의미합니다. 속성은 클래스 내에서 정의되며, 객체마다 고유한 값을 가질 수 있습니다.
    class Dog:
        def __init__(self, name, age):
            self.name = name  # 이름 속성
            self.age = age  # 나이 속성
  3. 메서드(Methods)

    • 객체가 수행할 수 있는 동작(행동)을 의미합니다. 메서드는 클래스 내에 정의된 함수입니다.
    class Dog:
        def bark(self):
            print("Woof!")
  1. 상속(Inheritance)

    • 기존 클래스(부모 클래스)의 속성과 메서드를 물려받아 새로운 클래스(자식 클래스)를 만드는 것. 상속을 통해 코드의 재사용성을 높일 수 있습니다.
    class Animal:
        def __init__(self, name):
            self.name = name
    
        def make_sound(self):
            pass
    
    class Dog(Animal):
        def make_sound(self):
            print("Woof!")
    
    class Cat(Animal):
        def make_sound(self):
            print("Meow!")
    
    my_dog = Dog("Buddy")
    my_dog.make_sound()  # "Woof!" 출력
    
    my_cat = Cat("Kitty")
    my_cat.make_sound()  # "Meow!" 출력

0개의 댓글