프로그램을 수행하면서 예상하지 못한 여러가지 일들이 발생할 수 있는데 이를 처리하기 위함 예외에는 예상이 가능한 예외와 예상이 불가능한 예외가 있음 1) try~except try:(예외 발생 가능한 코드) ~ except (발생가능한 에러종류):(예외 발생시 대응 가능한 코드)~ ZeroDivisionError말고 다른 에러를 적으면 프로그램 수행이 안됨 파이썬에서 기본적으로 제공하는 indexerror, nameerror, zerodivisionerror, valueerror, filenotfounderror 등이 있음 indexerror를 e로 받아서 print(e)하면 그 정보를 출력해줌 무슨 에러가 발생할지 모르면 지정하지 않아도 알아서 수행해줌 ..
1. 목표 직사각형 안에 어떤 도형을 그려놓자. 빨간색 영역의 넓이는 얼마인지 알고 싶다. 2. 기본적인 원리 만약, 위와 같은 직사각형에서 임의의 난수를 하나 뽑는다고 하자. 그 난수가 빨간색 영역인 HIT에 들어갈 확률은 얼마인가? 직사각형의 넓이는 $c(b-a)$이고 빨간색 영역의 넓이를 $S$라고 하면, 기하학적 확률의 원리에 의해 $$p= \frac{(난수가 \; 목표로 \; 하는 \; 빨간색 \; 영역의 \; 넓이)}{(난수가 \; 있을 \; 수 \; 있는 \; 전체 \; 영역의 \; 넓이)} = \frac{S}{c(b-a)}$$ 그러나 $S$를 모른다는 것이 중요하다. 즉 우리는 p값도 알 수가 없다 그런데 $p$값을 다른 방법으로 추정해볼 수 있는데 위와 같은 직사각형 위에서 $N$개의 난..
1) enumerate 리스트 element iteration할 시 index와 value를 같이 추출하는 기법 사전을 comprehension하여 생성할 수 있다 그림1은 enumerate를 이용한 dictionary comprehension의 예시를 보여준다. index : value 형태가 생각하기 쉽지만 value : index 형태로 생각할줄도 알아야함 자주 쓰니까 2) zip 두개 이상의 리스트를 병렬적으로 추출하는 기법 추출하면 원소들을 튜플로 묶어줌 이차원 행렬에서 열(column)을 추출할 때 유용하다
다양한 타입의 데이터를 하나의 자료로 표현할 수 있는 시퀀스 자료형 1) 리스트 슬라이싱(slicing) 리스트의 값들은 각각에 해당하는 주소(offset)를 갖는다 그 주소를 기반으로 리스트의 부분값을 슬라이싱하여 가져올 수 있는 기법 index가 처음부터 0,1,2,...로 가는건 누구나 알지만 거꾸로 -1,-2,-3...으로 가는건 아무나 아는 것이 아니다 2) concatenation, repeat, in 리스트도 덧셈 연산으로 concatenation 가능 *연산은 리스트를 반복함(repeat) in연산은 해당 원소가 리스트에 포함되어 있는지 확인 3) change element 리스트 내 원소를 변경 바꾸고 싶은 원소의 인덱스 i..
데이터 수집을 하기 위해 크롤링을 수행하는데 from bs4 import BeautifulSoup from urllib.request import urlopen url = 'https://www.chicagomag.com/Chicago-Magazine/November-2012/Best-Sandwiches-Chicago/' html = urlopen(url) soup = BeautifulSoup(html, 'html.parser') soup 다음과 같이 에러가 난다면 이런 경우 다음과 같이 headers를 다음과 같이 추가해서 크롤링 중이라는 것을 숨겨서 크롤링을 할 수 있다고 한다 from bs4 import BeautifulSoup from urllib.request import urlopen, Req..
일반적인 for loop보다 빠르게 리스트를 생성할 수 있다 위에가 일반적인 for loop 리스트 생성 아래는 list comprehension으로 생성 list comprehension이 조금 더 빠르다 1) 기본형 [ x for x in ] 에서 x를 뽑아서 x를 리스트에 넣어서 생성 2) 이중for문형 [ x+y for x in for y in ] 에서 x를 뽑은 뒤에 에서 y하나씩 뽑아서 x+y를 넣는다 바꿔말하면 for x in for y in .append(x+y) 3) 조건문 if [x for x in if ] 에서 x를 하나씩 뽑는데 에 맞는 경우만 리스트에 넣어준다 4) 조건문 if~else if만 쓰면 for문 뒤에 써야하는데 if~else를 쓰고 싶으면 for문 앞에 쓴다 [x if..