# --[클래스]--

class Monster:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def say(self):
        print(f'나는 {self.name} {self.age}살임')

shark = Monster('상어', 7)
shark.say()

 

# --[파일]--

# <"w" = 쓰기 모드 (원래 있던 파일이 사라짐, 없으면 새로운 파일 생성됨)>
f = open("새파일.txt", "w", encoding="utf-8")

f.write("첫 번째 문장")
f.write("\n두 번째 문장")
f.write("\n세 번째 문장")

f.close()


# <"r" = 읽기 모드>
f = open("새파일.txt", "r", encoding="utf-8")

line1 = f.readline() # 첫 번째 줄 읽기
print(line1)

f.close()


f = open("새파일.txt", "r", encoding="utf-8")

lines = f.readlines() # 모든 줄 읽기
for line2 in lines:
    print(line2)
    
f.close()


f = open("새파일.txt", "r", encoding="utf-8")
data = f.read() # 전체 읽기
print(data)

f.close()


# <"a" = 추가 모드>
f = open("새파일.txt", "a", encoding="utf-8")

f.write("\n추가된 문장 1")
f.write("\n추가된 문장 2")
f.write("\n추가된 문장 3")
    
f.close()


# with문
with open("새파일.txt", "a", encoding="utf-8") as f:
    f.write("\n끝")

 

for i in range(1, 51):
  with open(str(i) + "주차.txt", "w", encoding="utf-8") as report_file:
    report_file.write("- {0} 주차 주간 보고 -".format(i))
    report_file.write("\n부서 :")
    report_file.write("\n이름 :")
    report_file.write("\n업무 요약 :")

 

# -[turtle]-

# import turtle as t
# t.shape("turtle")


# import turtle
# t=turtle.Pen()


d=100
t.forward(d)
t.left(120)
t.forward(d)
t.right(140)

 

# -[예외처리]-

class BigNumberError(Exception):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg

try:
    print("한 자리 숫자 나누기 전용 계산기입니다.")
    num1 = int(input("첫 번째 숫자를 입력하세요: "))
    num2 = int(input("두 번째 숫자를 입력하세요: "))
    if num1 >= 10 or num2 >= 10:
        raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
    print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
except ValueError:
    print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
except BigNumberError as err:
    print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.")
    print(err)
finally: # 에러 발생 여부 상관 없이 항상 실행
    print("계산기를 이용해 주셔서 감사합니다.")

 

[모듈] 파이썬의 함수, 클래스 등의 정의와 변수와 실행문 등을 저장한 파일

[패키지] 모듈을 구조화하여 관리하기 위하여 나눠 놓은 것이다.

  • os 모듈: 운영체제에 작업을 요청하는 기능을 제공함
  • sys 모듈: 파이썬 인터프리터에서 사용하는 변수나 기능에 접근할 때 사용함
  • math 모듈: 수학 계산에 유용한 상수와 함수를 제공함
  • random 모듈: 특정 범위에서 임의의 난수 값을 생성하거나 주어진 목록에서 하나를 고르는 함수를 제공함
  • datetime 모듈: 날짜와 시간을 다루는 데 사용함
[예외 클래스] [예외 설명]
ZeroDivisionError 숫자를 0으로 나눌 때 발생한다.
NameError 선언되지 않은 변수에 접근하려 할 때 발생한다.
TypeError 자료형과 관련된 문제 상황이 있을 때 발생한다.
IOError 입출력과 관련된 문제 상황이 있을 때 발생한다.
ValueError 잘못된 값이 전달되었을 때 발생한다.
indexError 리스트 요소에 잘못 접근하였을 때 발생한다.

 

[절차 지향 프로그래밍] 컴퓨터 프로그램을 컴퓨터가 실행해야 할 명령어의 목록

[객체 지향 프로그래밍] 실생활에서 관찰할 수 있는 객체를 프로그램의 기본 단위로 활용

 

1. 절차 지향 프로그래밍

장점

  • 속도가 빠르고 최적화된 코드를 짤 수 있다.
  • 비교적 단순한 문법을 제공하므로 짧은 단위의 코드 분석이 가능하다

 

단점

  • 대규모의 프로젝트를 진행하기 어렵다.
  • 코드가 직관적이지 못하여 분석하는 데 시간이 오래 걸린다.
  • 문법적 편의성이 제공되지 않아 더 많은 코드를 작성해야 한다.

 

 

2. 객체 지향 프로그래밍

 장점

  • 변경이 용이한 유연한 설계를 할 수 있다.
  • 직관적인 코드 분석을 통해 버그가 적은 프로그램을 작성할 수 있다.
  • 프로그래밍에 대한 이해를 쉽게 하고 개발, 보수, 테스트 과정을 간편하게 한다.

 

단점

  • 처리 속도가 상대적을 느리다.
  • 초기 설계가 어렵다.