프로그램에서 필요한 요소만을 사용해서 객체를 표현하는 것을 추상화라고 합니다.

학생 성적 관리 프로그램 만들기

# 학생 리스트를 선언합니다.
students = [
    { "name": "윤인성", "korean": 87, "math": 98, "english": 88, "science": 95 },
    { "name": "연하진", "korean": 92, "math": 98, "english": 96, "science": 98 },
    { "name": "구지연", "korean": 76, "math": 96, "english": 94, "science": 90 },
    { "name": "나선주", "korean": 98, "math": 92, "english": 96, "science": 92 },
    { "name": "윤아린", "korean": 95, "math": 98, "english": 98, "science": 98 },
    { "name": "윤명월", "korean": 64, "math": 88, "english": 92, "science": 92 }
]

# 학생을 한 명씩 반복합니다.
print("이름", "총점", "평균", sep="\t")
for student in students:
    # 점수의 총합과 평균을 구합니다.
    score_sum = student["korean"] + student["math"] +\
        student["english"] + student["science"]
    score_average = score_sum / 4
    # 출력합니다.
    print(student["name"], score_sum, score_average, sep="\t")

 

딕셔너리로 학생을 표현하고 리스트로 묶어 학생들을 표현했습니다.

이처럼 여러가지 속성을 가질 수 있는 대상을 객체라고 부릅니다.

현재 코드에서 학생이 바로 객체입니다.

 

클래스 선언하기

class 클래스 이름:

    클래스 내용

 

클래스를 기반으로 만들어진 객체를 인스턴스라고 부릅니다.

 

클래스가 가지고 있는 함수를 메소드라고 부릅니다.

class 클래스 이름:

    def 메소드 이름(self, 추가적인 매개변수)

        pass

 

 

'혼공파' 카테고리의 다른 글

07-2 외부 모듈  (0) 2024.02.11
혼공파 7장 모듈(1)  (0) 2024.02.04
혼공파 5주 예외처리 6장  (0) 2024.02.04
혼공파 4주차 5장 함수  (2) 2024.01.28
혼공파 3주차 Ch04 반복문  (1) 2024.01.21

07-2 외부 모듈

사이킷-런(scikit-learn), 텐서플로우(Tensorflow), 장고(Django), 플라스크(Flask), 넘파이(NumPy)를 외부 모듈이라고 합니다. 앞으로는 이런 모듈 책을 학습하시는 것이 좋다고 해요.

이번 과정은 Beautiful Soup, Flask 모듈을 공부하는데요.

 

먼저 사용하기 위해서 설치를 해야 하는데요.

pip install 모듈이름

 

Beautiful Soup은 웹 페이지를 분석할 때 사용하는 모듈입니다.

기사청의 전국 날씨 정보를 가져와서 출력해 보겠습니다.

# 모듈을 읽어 들입니다.
from urllib import request
from bs4 import BeautifulSoup

# urlopen() 함수로 기상청의 전국 날씨를 읽습니다.
target = request.urlopen("http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108")

# BeautifulSoup을 사용해 웹 페이지를 분석합니다.
soup = BeautifulSoup(target, "html.parser")

# location 태그를 찾습니다.
for location in soup.select("location"):
    # 내부의 city, wf, tmn, tmx 태그를 찾아 출력합니다.
    print("도시:", location.select_one("city").string)
    print("날씨:", location.select_one("wf").string)
    print("최저기온:", location.select_one("tmn").string)
    print("최고기온:", location.select_one("tmx").string)
    print()
# 모듈을 읽어 들입니다.
from flask import Flask
from urllib import request
from bs4 import BeautifulSoup

# 웹 서버를 생성합니다.
app = Flask(__name__)
@app.route("/")

def hello():
    # urlopen() 함수로 기상청의 전국 날씨를 읽습니다.
    target = request.urlopen("http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108")

    # BeautifulSoup를 사용해 웹 페이지를 분석합니다.
    soup = BeautifulSoup(target, "html.parser")

    # location 태그를 찾습니다.
    output = ""
    for location in soup.select("location"):
        # 내부의 city, wf, tmn, tmx 태그를 찾아 출력합니다.
        output += "<h3>{}</h3>".format(location.select_one("city").string)
        output += "날씨: {}<br/>".format(location.select_one("wf").string)
        output += "최저/최고 기온: {}/{}"\
            .format(\
                location.select_one("tmn").string,\
                location.select_one("tmx").string\
            )
        output += "<hr/>"
    return output

Flask 모듈

웹 개발을 할 때 사용하는 모듈은 장고와 플라스크입니다.

장고는 매우 다양한 기능을 제공하는 웹 개발 프레임워크입니다.

플라스크는 작은 기능만을 제공하는 웹 개발 프로엠워크입니다.

 

사용하기 위해 설치해야 하는데요.

pip install flask

 

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "<h1>Hello World!</h1>"

@로 시작하는 구문을 파이썬에서는 '데코레이터'라고 부릅니다.

데코레이터는 꾸며주는 건데요.

함수 데코레이터와 클래스 데코레이터로 나뉘게 됩니다.

 

외부 모듈은 사용하는 목적에 따라 다른데요.

웹 서버 개발을 위해서는 Django, Flask

인공지능 개발을 위해서는 scikit-learn, tensorflow, keras

데이터 분석을 위해서는 pandas, matplotlib

크롤러 개발을 위해서는 BeautifulSoup, requests, scrapy

를 활용하시면 됩니다.

 

 

'혼공파' 카테고리의 다른 글

혼공파 08 클래스  (1) 2024.02.11
혼공파 7장 모듈(1)  (0) 2024.02.04
혼공파 5주 예외처리 6장  (0) 2024.02.04
혼공파 4주차 5장 함수  (2) 2024.01.28
혼공파 3주차 Ch04 반복문  (1) 2024.01.21

7장부터는 고급편으로 다른 사람이 만든 것을 활용하는 방법을 배우게 됩니다.

파이썬은 모듈이라는 기능을 활용해 코드를 분리하고 공유합니다.

모듈은 여러 변수와 함수를 가지고 있는 집합체로 크게 표준 모듈과 외부 모듈로 나뉩니다.

 

사용하는 방법은

import 모듈 이름

 

import.math

모듈에 대한 정보는 파이썬 공식 문서에서 확인할 수 있습니다.

 

사용하는 방법은

math.sin(x)
x 라디안의 사인(sine)을 반환합니다.

 

이렇게 사용하는데요.

math.cos(), math.sin(), math.pi처럼 앞에 무언가를 계속 입력해야 하는 것이 귀찮다면 from 구문을 사용할 수 있습니다.

from math import sin, cos, tan, floor, ceil

 

from math import *

math를 붙이는 것이 싫고, 모든 기능을 가져와 사용하는 것이 목적이라면 * 기호를 사용합니다.

 

이렇게 모든 모듈을 가져와 사용하다보면 충돌이 나는 경우가 발생하는데요.

as를 사용해서 짧게 만들어 사용할 수 있습니다.

 

import 모듈 as 사용하고 싶은 식별자

 

import math as m
m.sin(1)

 

랜덤한 값을 생성할 때 사용하는 모듈

import random

 

import random
print("# random 모듈")

# random(): 0.0 <= x < 1.0 사이의 float를 리턴합니다.
print("- random():", random.random())

# uniform(min, max): 지정한 범위 사이의 float를 리턴합니다.
print("- uniform(10, 20):", random.uniform(10, 20))

# randrange(): 지정한 범위의 int를 리턴합니다.
# - randrange(max): 0부터 max 사이의 값을 리턴합니다.
# - randrange(min, max): min부터 max 사이의 값을 리턴합니다.
print("- randrange(10)", random.randrange(10))

# choice(list): 리스트 내부에 있는 요소를 랜덤하게 선택합니다.
print("- choice([1, 2, 3, 4, 5]):", random.choice([1, 2, 3, 4, 5]))

# shuffle(list): 리스트의 요소들을 랜덤하게 섞습니다.
print("- shuffle([1, 2, 3, 4, 5]):", random.shuffle([1, 2, 3, 4, 5]))

# sample(list, k=<숫자>): 리스트의 요소 중에 k개를 뽑습니다.
print("- sample([1, 2, 3, 4, 5], k=2):", random.sample([1, 2, 3, 4, 5], k=2))
# random 모듈
- random(): 0.9667180292767871
- uniform(10, 20): 18.153949827852813
- randrange(10) 4
- choice([1, 2, 3, 4, 5]): 4
- shuffle([1, 2, 3, 4, 5]): None
- sample([1, 2, 3, 4, 5], k=2): [5, 1]

 

sys모듈

시스템과 관련된 정보를 가지고 있는 모듈

 

os 모듈

운영체제와 관련된 기능을 가진 모듈

새로운 폴더를 만들거나 폴더 내부의 파일 목록을 보는 일도 모두 os 모듈을 활용해서 처리합니다.

 

datetime 모듈

날짜, 시간과 관련된 모듈

날짜 형식을 만들 때 자주 사용되는 코드로 구성

 

# 모듈을 읽어 들입니다.
import datetime

# 현재 시각을 구하고 출력하기
print("# 현재 시각 출력하기")
now = datetime.datetime.now()
print(now.year, "년")
print(now.month, "월")
print(now.day, "일")
print(now.hour, "시")
print(now.minute, "분")
print(now.second, "초")
print()

# 시간 출력 방법
print("# 시간을 포맷에 맞춰 출력하기")
output_a = now.strftime("%Y.%m.%d %H:%M:%S")
output_b = "{}년 {}월 {}일 {}시 {}분 {}초".format(now.year,\
now.month,\
now.day,\
now.hour,\
now.minute,\
now.second)
output_c = now.strftime("%Y{} %m{} %d{} %H{} %M{} %S{}").format(*"년월일시분초")
print(output_a)
print(output_b)
print(output_c)
print()
# 현재 시각 출력하기
2024 년
2 월
4 일
15 시
28 분
36 초

# 시간을 포맷에 맞춰 출력하기
2024.02.04 15:28:36
2024년 2월 4일 15시 28분 36초
2024년 02월 04일 15시 28분 36초

 

 

time 모듈

import time

print("지금부터 5초 동안 정지합니다!")
time.sleep(5)
print("프로그램을 종료합니다")

 

urllib 모듈'URL'을 다루는 라이브러리

# 모듈을 읽어 들입니다.
from urllib import request

# urlopen() 함수로 구글의 메인 페이지를 읽습니다.
target = request.urlopen("https://google.com")
output = target.read()

# 출력합니다.
print(output)

 

'혼공파' 카테고리의 다른 글

혼공파 08 클래스  (1) 2024.02.11
07-2 외부 모듈  (0) 2024.02.11
혼공파 5주 예외처리 6장  (0) 2024.02.04
혼공파 4주차 5장 함수  (2) 2024.01.28
혼공파 3주차 Ch04 반복문  (1) 2024.01.21

+ Recent posts