[코딩 공부] 9일차(2/21)

성철민·2023년 2월 21일
0

배움

목록 보기
9/42


Schedule1. 스파르타코딩클럽

내일배움캠프 5기 합류 전 기본적인 강의를 들어야 한다고 한다.

강의: [왕초보] 비개발자를 위한, 웹개발 종합반

웹개발을 위한 기본적인 강의 (HTML, CSS, JavaScript)

진도

import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
trs = soup.select('#old_content > table > tbody > tr')
#old_content > table > tbody > tr:nth-child(3) > td:nth-child(1) > img
for tr in trs:
    img = tr.select_one('td:nth-child(1) > img')
    a = tr.select_one('td.title > div > a')
    b = tr.select_one('td.point')
    if a is not None:
        print(img['alt'], a.text, b.text)
  • 네이버 영화의 여러 데이터들을 requests, BeautifulSoup 모듈을 이용해 긁어오기
  • 긁어온 정보를 DB에 저장하기
  • mongoDB 시작하기
  • mongoDB 사이트 가입 및 DB세팅
  • pymongo, dnspython 모듈 설치
  • pymongo 모듈을 불러 와서 mongoDB에 접속
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.caexhck.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
doc = {
    'name': '영수',
    'age': 24
}
  • mongoDB에서 데이터 전체 불러오기
all_users = list(db.users.find({},{'_id':False}))
  • mongoDB에서 데이터 하나 불러오기
users = db.users.find_one({})
  • mongoDB의 데이터 수정하기
db.users.update_one({'name':'영수'}, {'$set':{'age':19}})
  • mongoDB의 데이터 삭제하기
  • 총정리
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

감상
mongoDB를 사용해보고 웹사이트 크롤링한 결과를 mongoDB에 저장하고 불러왔다. 아직까진 전체적으로 맛보는 수준인 것 같다.



Schedule2. Codeit(컴퓨터 과학 전공 과정)

코드잇 코딩 공부 과정

[Python] 객체 지향 프로그래밍의 4개의 기둥

Chapter4. 다형성

16. 파이썬 EAFP 코딩 스타일과 다형성

  • LBYL(Look Before You Leap) : 어떤 작업 전에 확인이나 검사를 먼저 거치는 코딩 스타일, 돌다리도 두드려보고 건너라
  • EAFP(Easier to Ask for Forgiveness than Permission) : 일단 실행하고 나중에 문제가 생기면 해결하는 코딩 스타일, 허락보다 용서를 구하는 것이 쉽다
try:
	total_area += shape.area()
except (AttributeError, TypeError):
	print("그림판에 area 메소드가 없거나 잘못 정의되어 있는 인스턴스 {}가 있습니다.".format(shape))
  • 위의 예시처럼 try~except구문으로 에러가 발생할 수도 있는 구문을 처리해줄 수 있다(EAFP스타일) << 파이썬스러운 스타일

감상
객체 지향 프로그래밍의 4가지 중요한 점을 배울 수 있었다. 아직까지는 모호하지만 완강 후 한번 더 전체적인 복습을 통해 전체적인 흐름을 기억해야겠다


Schedule3. BAEKJOON

파이썬 문제 풀어보기

단계별로 풀어보기(추가된 문제 도전중)


10811번. 바구니 뒤집기

개요: M번만큼 i~j까지 바구니를 뒤집어 출력하는 문제

접근방법: 배열을 뒤집는 방법을 생각해야 한다

정답

import sys

N, M = map(int, sys.stdin.readline().split())
array = [n for n in range(1, N + 1)]
for _ in range(M):
    i, j = map(int, sys.stdin.readline().split())
    cache = array[i-1:j]
    array[i-1:j] = list(reversed(array[i-1:j]))
    
print(*array, sep=' ')
  • 배열은 0, 1, 2...인덱스로 진행되고 안에 들어있는 값은 1, 2, 3...으로 진행되므로 생각을 잘했어야 했다
  • 배열의 순서를 뒤집는 방법을 reversed()함수를 사용했다. reversed()함수는 iterator객체를 리턴하므로 list()로 감싸서 리스트를 리턴해주어야 한다.

profile
developer

0개의 댓글