{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Assignment 2\n",
"### [정보]\n",
"#### 1) Due Date: 2016년 10월 12일 (수), 23시 59분\n",
"#### 2) 제출방법: ipython notebook으로 작성된 내용을 github 또는 dropbox와 같은 클라우드에 올려 해당 URL을 다시 http://nbviewer.ipython.org 에 넣어서 산출된 URL을 EL사이트에 제출함.\n",
"#### 3) 내용: 반드시 python code와 수행 결과를 ipython notebook 내에 작성하여 넣고 이에 대한 설명등을 해당 코드 아래에 markdown cell에 넣어 기입하시오.\n",
"#### 4) 숙제이후 소감: 문제를 모두 푼 이후에 현재까지 강의를 들은 이후의 소감, 숙제를 한 이후의 소감, 또는 전하고자 하는 말 등을 짧막하게라도 좋으니 마지막에 함께 작성하여 제출하시오. \n",
"#### 5) 문제 (프로젝트 오일러 3문제 포함하여 총 7개)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 다음 6 개의 Expression에 대해 Evaluation 결과 값을 출력하고, 해당 결과가 나온 이유에 대해 설명하시오\n",
" - 1 and 2 and 3 and 4\n",
" - 1 or 2 or 3 or 4\n",
" - 1 and 2 or 3 and 4\n",
" - (1 and 2) or (3 and 4)\n",
" - 1 or 2 and 3 or 4\n",
" - (1 or 2) and (3 or 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 경로에 해당하는 문자열 1개를 입력 받아 그 안에 디렉토리 경로명과 파일명을 분리하여 리스트로 반환하는 함수 div_path(s)를 작성하시오.\n",
" - 인자로 전달하는 문자열은 경로만 들어간다고 가정한다.\n",
" - 각 디렉토리와 파일을 구분하는 문자는 '/'로 가정한다.\n",
" - 반환하는 리스트의 첫번째 원소는 디렉토리이고 두번째 원소는 파일명이다.\n",
" - 다음과 같은 실행 및 출력 결과가 도출되어야 한다.\n",
" - div_path('/usr/local/bin/python')\n",
" - ['/usr/local/bin', 'python']\n",
" - div_path('/home/chulsoo/test.txt')\n",
" - ['/home/chulsoo', 'test.txt']\n",
" - [참고] 리스트(l) 내에 새로운 정수값 (예를 들어 10)을 넣는 방법은 l.append(10) 이다. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 두 개의 리스트를 인자로 받아서 그 두 개의 리스트에 대한 '합집합'을 반환하는 함수 list_union(lista, listb)를 작성하시오.\n",
" - 인자로 전달하는 리스트 2 개에는 정수값만 들어간다고 가정하자.\n",
" - 함수 내에서 새로운 리스트를 만들어 그 리스트 내에 인자로 받은 두 리스트의 모든 원소를 넣어 반환한다.\n",
" - 반환하는 리스트에는 절대로 중복된 원소가 들어 있으면 안된다 (집합의 조건).\n",
" - 반환하는 리스트는 정렬이 되어 있어야 한다.\n",
" - 다음과 같은 실행 및 출력 결과가 도출되어야 한다.\n",
" - list_union([1, 2, 3], [1, 2, 4])\n",
" - [1, 2, 3, 4]\n",
" - list_union([-10, -5, 0, -1], [100, 9, 0, 9])\n",
" - [-10, -5, -1, 0, 9, 100]\n",
" - list_union([0, 1, 2], [0, 1, 2])\n",
" - [0, 1, 2]\n",
" - [참고] 리스트(l) 내에 새로운 정수값 (예를 들어 10)을 넣는 방법은 l.append(10) 이다.\n",
" - [참고] 임의의 정수값 (x)이 리스트 (l) 내에 존재하는지 판단하는 방법은 x in l 이다."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [프로젝트 오일러 문제 4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [프로젝트 오일러 문제 5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [프로젝트 오일러 문제 6]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [Incremental Project] 웹 URL로 지정된 웹페이지를 문자열로 가져와 1) 모든 HTML 태그를 제외한 순수 텍스트 문자열만을 걸러내고, 2) 그 순수 텍스트 문자열 안에 존재하는 단어가 총 몇개인지 출력하는 프로그램을 작성하시오.\n",
" - HTML 태그는 다음 조건을 가지는 것이다.\n",
" - < 로 시작하여 >로 끝난다.\n",
" - 예를 들어, 아래와 같은 HTML 내용 내에 한 줄이 있다고 가정하자.\n",
" \n",
" ```\n",
" \n",
" ```\n",
" - 위 소스에서 HTML 태그를 제외한 순수 텍스트 문자열은 아래와 같다.\n",
" \n",
" ```\n",
" 로그인 유지 \n",
" ```\n",
" \n",
" - 한편, 아래와 같은 HTML 한 줄이 있다고 가정하자.\n",
" \n",
" ```\n",
" \n",
" ```\n",
" \n",
" - 위 소스는 HTML 태그로만 구성된 것이며 걸러낼 수 있는 순수 텍스 문자열은 존재하지 않는다.\n",
" \n",
" - 단어를 나누는 기준은 오로지 공백문자 (whitespace)이다.\n",
" - 즉, 위 순수 텍스트 문자열인 \"로그인 유지\"에서 분리한 단어는 \"로그인\"과 \"유지\"이다.\n",
" - 다음은 URL로 지정된 웹페이지를 특정 문자열로 가져오는 코드이다. \n",
" - 즉, 숙제 코드는 아래 코드로 부터 시작해야 한다."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"import urllib2\n",
"\n",
"source = urllib2.urlopen(\"http://cse.kut.ac.kr/\").read()\n",
"\n",
"print source # 추후 숙제 답안 제출 때엔 왼쪽 라인은 주석처리할 것"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}