{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Assignment 2\n", "### [정보]\n", "#### 1) Due Date: 2019년 10월 11일 (금), 23시 59분\n", "\n", "#### 2) 제출방법: colab으로 작성된 notebook URL을 EL사이트에 제출 (EL 사이트의 본인 게시물에서 클릭이 되도록 함)\n", "\n", "#### 3) 내용: 반드시 python code와 수행 결과를 colab notebook 내에 작성하여 넣고 이에 대한 설명등을 해당 코드 아래에 markdown cell 등에 넣어 기입하시오.\n", "\n", "#### 4) 숙제이후 소감 작성: 모든 문제의 답을 작성한 이후에 현재까지 강의를 들은 후의 소감, 숙제를 한 이후의 소감, 또는 전하고자 하는 말 등을 짧막하게라도 좋으니 마지막에 함께 작성하여 제출하시오. \n", "\n", "#### 5) 반드시 본인 스스로 문제를 해결하세요~~~\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 일반 문제" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1) 다음 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": [ "2) 경로에 해당하는 문자열 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": [ "3) 두 개의 리스트를 인자로 받아서 그 두 개의 리스트에 대한 '합집합'을 반환하는 함수 list_union(lista, listb)를 작성하시오.\n", " - **집합 자료형 set은 사용하지 않는다.**\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) 두 개의 리스트를 인자로 받아서 그 두 개의 리스트에 대한 '교집합'을 반환하는 함수 list_intersection(lista, listb)와 '차집합'을 반환하는 함수 list_difference(lista, listb)를 작성하시오.\n", " - 모든 가정과 조건은 3번 문제와 동일하다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5) 두 개의 양의 정수를 인자로 받아서 해당 범위안에 있는 소수(prime number)의 리스트를 출력하는 함수 print_primenumber(a, b)를 작성하시오.\n", " - 이미 구현된 모듈이나 라이브러리는 사용하지 않는다.\n", " - 함수의 반환(return)은 없으며 함수 내의 끝에서 .format()을 사용하여 다음과 같이 출력한다.\n", " - print_primenumber(2, 10)\n", " - 2 이상 10 이하 정수 중 소수 리스트: [2, 3, 5, 7]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Incremental Project 문제" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 웹 URL로 지정된 웹페이지를 문자열로 가져와 1) 모든 HTML 태그를 제외한 순수 텍스트 문자열만을 걸러내고, 2) 그 순수 텍스트 문자열 안에 존재하는 단어가 총 몇개인지 출력하는 프로그램을 작성하시오.\n", " - HTML 태그는 다음 조건을 가지는 것이다.\n", " - < 로 시작하여 >로 끝난다.\n", " - 예를 들어, 아래와 같은 HTML 내용 내에 한 줄이 있다고 가정하자.\n", " ```\n", " \n", " ```\n", " - 위 소스에서 HTML 태그를 제외한 순수 텍스트 문자열: 로그인 유지 \n", "
\n", "
\n", " - 다른 예제\n", " ```\n", " 교육역량강화사업 온라인 컨텐츠
\n", " ```\n", " - 순수 텍스트 문자열: 교육역량강화사업 온라인 컨텐츠\n", "
\n", "
\n", " \n", " - 한편, 아래와 같은 HTML 한 줄이 있다고 가정하자.\n", " \n", " ```\n", " \n", " ```\n", " - 위 한 줄은 HTML 태그로만 구성된 것이며 걸러낼 수 있는 순수 텍스 문자열은 존재하지 않는다.\n", "

\n", " - 다른 예제\n", " ```\n", " //\n", " ```\n", " - 순수 텍스트 문자열: 없음\n", "
\n", "
\n", " - 단어를 나누는 기준은 오로지 공백문자 (whitespace)이다.\n", " - 즉, 위 순수 텍스트 문자열인 \"로그인 유지\"에서 분리한 단어는 \"로그인\"과 \"유지\"이다.\n", " - 중복을 고려하지 않고 무조건 모든 단어의 개수를 세어서 출력한다.\n", " - 본 숙제를 위하여 HTML 파싱과 관련된 모듈 (예. BeautifulSoup) 사용 금지\n", " - 다음은 URL로 지정된 웹페이지를 특정 문자열로 가져오는 코드이다. \n", " - 즉, 숙제 코드는 아래 코드로 부터 시작해야 한다.\n", " - 아래 코드 수행시 requests 모듈이 존재하지 않는 에러가 발생하면 command 창에서 다음 코드 입력하여 requests 모듈 설치후 아래 코드 수행\n", " ```\n", " > pip install requests\n", " ```" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import requests\n", "\n", "req = requests.get('http://cse.koreatech.ac.kr')\n", "\n", "source = req.text" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "컴퓨터공학부\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\tSchoolfun - Study and Fun\n", "\t\n", "\t\n", "\t\n", "\t\t\n", "\t\n", "\t\n", "\t\t\n", "\t\t\t\n", "\n", "\n", "
\n", "\t
\n", "\t\t
\n", "\t\t\t\n", "\t\t\t\t\n", "\t\t\t\t\n", "\t\t\t\t\n", "\t\t\t\n", "\t\t\t\"School\n", "\t\t\t\n", "\t\t
\n", "\t
\n", "\t\n", "
\n", "\t \t \n", "\n", "
\n", "
\n", " \n", "
\n", "\t
\n", "
\n", "
\n", "
\n", "
\n", "

IT 교육의 글로벌 메카

\n", "

한국기술교육대학교 컴퓨터공학부 홈페이지에 오신 것을
환영합니다!

\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "\t
\n", "
\n", "

IT 융합소프트웨어 인력양성사업

\n", "

글로벌 수준의 IT전문인력 양성
\n", "IT융합분야에 대한 국제적인 경쟁력 고취

\n", " 바로가기\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "\t
\n", "
\n", "

교육역량강화사업 컨텐츠

\n", "

교육역량강화사업 온라인 컨텐츠를 소개합니다.

\n", " 바로가기\n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\t\t\n", "
\n", "\n", "
\n", "
\n", "\n", "
\n", "
\n", "\n", "
\n", "
\n", "\n", "
\n", "
\n", "\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n" ] } ], "source": [ "# 추후 숙제 답안 제출 때엔 아래 코드는 주석처리할 것\n", "print(source)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 본 문제에 대한 정확한 답안은 존재하지 않으며, 채점은 코딩 내용을 보고 코딩의 정확성, 완결성, 가독성 등을 보고 평가한다. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 2개 이상의 URL에 대하여 순수한 단어의 개수를 출력하는 예시를 제시할 것" ] } ], "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.8" } }, "nbformat": 4, "nbformat_minor": 1 }