728x90
수업내용
1교시 (09:30-10:20)
JavaScript
- 지난 시간 복습
2교시 (10:30-11:20)
- script_04.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Document</title>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<h3>템플릿 문자열 Template Strings</h3>
<hr>
<script type="text/babel">
const lastName = "Jun";
const middleName = "Marble";
const firstName = "Antonio Asher";
// 문자열 연결
console.log(lastName + ", " + firstName + " " + middleName);
// ES6 템플릿 문자열
console.log(`${lastName}, ${firstName} ${middleName}`);
var ticketAgent = "예술의 전당"
var event = "서태지와 아이들"
var qty = 2
var price = 10
// ES6 템플릿 문자열은 공백(줄바꿈 포함)을 유지한다.
console.log(`
${firstName} 님께,
${event} 티켓 ${qty} 건을 구매해주셔서 감사합니다.
주문 상세 정보:
${lastName} ${firstName} ${middleName}
${qty} x ${price} = ${qty*price} 공연: ${event}
공연 시작 30분 전까지 배부처에서 티켓을 수령하시기 바랍니다.
감사합니다.
${ticketAgent} 드림
`);
</script>
</body>
</html>
- script_05.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Document</title>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<h3>템플릿 문자열</h3>
<script type="text/babel">
var article = {
title: "Template Strings",
body: `
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sef fo eiusmod temport</p>
<p> laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
`
}
document.body.innerHTML = `
<section>
<header>
<h1>Thr HTML5 Blog</h1>
</header>
<article>
<h2>${article.title}</h2>
${article.body}
</article>
<footer>
<p>copyright ${new Date().getYear()} | The HTML5 Blog</p>
</footer>
</section>
`
</script>
</body>
</html>
3교시 (11:30-12:20)
Node.js
- 지난 시간 복습
- http_05.js
var http = require('http');
var fs = require('fs');
var url = require('url');
var app = http.createServer(function(req, res){
var _url = req.url;
var queryData = url.parse(_url, true).query;
console.log(queryData.id);
if (_url == '/') {
_url = '/index.html';
}
if (_url == '/favicon.ico') {
res.writeHead(404); // 파일을 찾을 수 없을 때
res.end();
return;
}
res.writeHead(200);
res.end(queryData.id);
});
app.listen(3000, function(){
console.log('http_05.js 웹서버 시작 >>> : ');
})
- http_06.js
var http = require('http');
var fs = require('fs');
var url = require('url');
var app = http.createServer(function(req, res){
var _url = req.url;
var queryData = url.parse(_url, true).query;
var title = queryData.id;
if (_url == '/') {
title = 'Welcome';
}
if (_url == '/favicon.ico') {
res.writeHead(404);
res.end();
return;
}
res.writeHead(200);
var template = `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ul>
<li><a href="/?id=HTML">HTML</a></li>
<li><a href="/?id=CSS">CSS</a></li>
<li><a href="/?id=JavaScript">JavaScript</a></li>
</ul>
<h2>${title}</h2>
<p><a href="https://www.w3.org/TR/html5/" target="_blank" title="html5 speicification">
Hypertext Markup Language (HTML)</a> is the standard markup language for
<strong>creating <u>web</u> pages</strong> and web applications.
Web browsers receive HTML documents from a web server or from local storage
and render them into multimedia web pages. HTML describes the structure of a web page
semantically and originally included cues for the appearance of the document.
<img src="coding.jpg" width="100%">
</p><p style="margin-top:45px;">
HTML elements are the building blocks of HTML pages. With HTML constructs,
images and other objects, such as interactive forms, may be embedded into the rendered page.
It provides a means to create structured documents by denoting structural semantics
for text such as headings, paragraphs, lists, links, quotes and other items.
HTML elements are delineated by tags, written using angle brackets.
</p>
</body>
</html>
`;
res.end(template);
});
app.listen(3001, function(){
console.log('http_06.js 웹서버 시작 >>> : ');
});

4교시 (12:30-13:20)
- http_10.js
// 서버에서 다른 웹 사이트의 데이터를 가져와 응답하기
// GET 방식 : get() 메소드 사용해보기
var http = require('http');
var option = {
// http://localhost:8088/kosmoSpring/a.jsp
host: '192.168.219.109',
port: 8088,
path: '/kosmoSpring/a.jsp'
};
var req = http.get(option, function(res) {
// 응답 처리
var resData = '';
res.on('data', function(chunk) {
resData += chunk;
});
res.on('end', function() {
console.log(resData);
});
});
req.on('error', function(err) {
console.log("오류 발생: " + err.message);
});
/*
C:\Users\kosmo>curl "http://localhost:8088/kosmoSpring/a.jsp"
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>a.jsp</h3>
<hr>
</body>
</html>
C:\Users\kosmo>
*/
- http_08.js
// 서버에서 다른 웹 사이트의 데이터를 가져와 응답하기
// GET 방식 : get() 메소드 사용해보기
var http = require('http');
var options = {
host: 'www.google.com',
port: 80,
path: '/'
};
var req = http.get(options, function(res) {
// 응답 처리
var resData = '';
res.on('data', function(chunk) {
resData += chunk;
});
res.on('end', function() {
console.log(resData);
});
});
req.on('error', function(err) {
console.log("오류 발생: " + err.message);
});
- http_07.js
var http = require('http');
var fs = require('fs');
// 웹 서버 객체를 만든다.
// 클라이언트의 요청을 처리하는 콜백 함수를 파라미터로 전달한다.
var server = http.createServer(function(req, res) {
console.log('클라이언트 요청이 들어왔습니다.');
var filename = 'house.png';
fs.readFile(filename, function(err, data) {
res.writeHead(200, {"Content-Type": "image/png"});
res.write(data);
res.end();
});
});
// 웹 서버를 시작하면 3000번 포트에서 대기하도록 설정한다.
var port = 3000;
server.listen(port, function() {
console.log('웹 서버가 시작되었습니다. : %d', port);
});
// connection 이벤트로 클라이언트 연결 이벤트 처리
server.on('connection', function(socket) {
var addr = socket.address();
console.log('클라이언트로 접속했습니다. : %s, %d', addr.address, addr.port);
});
// close 이벤트로 서버 종료 이벤트 처리
server.on('close', function(){
console.log('서버가 종료됩니다.');
});
- http_09.js
// 서버에서 다른 웹 사이트의 데이터를 가져와 응답하기
// POST 방식 : request() 메소드 사용
// request() 메소드는 get() 메소드와 사용방법이 다르다.
// 요청을 보내려면 헤더와 본문을 모두 직접 설정해야 한다.
// 구글 사이트에서 POST 요청을 받지 못하므로 오류 발생
var http = require('http');
var opts = {
host: 'www.google.com',
method: 'POST',
port: 80,
path: '/',
headers: {}
};
var resData = '';
var req = http.request(opts, function(res) {
// 응답 처리
var resData = '';
res.on('data', function(chunk) {
resData += chunk;
});
res.on('end', function() {
console.log(resData);
});
});
opts.headers['Content-Type'] = 'application/x-www-form-urlencoded';
req.data = "q=actor";
opts.headers['Content-Length'] = req.data.length;
req.on('error', function(err) {
console.log("오류 발생: " + err.message);
});
req.write(req.data);
req.end();
5교시 (14:30-15:20)
Python
- Jupyter notebook 설치
python -m pip install --upgrade pip
1. pip : 파이썬 패키지 설치 모듈
-- pip 을 최신 모듈로 업그레드 하라고 하는 명령
python -m pip install --upgrade pip
2. numpy
3. pandas
4. matplotlib
5. scipy
6. scikit-learn
7. jupyter
7.1 jupyter notebook
pip install notebook --upgrade
6교시 (15:30-16:20)
- 기초 문법
#!/usr/bin/env python
# coding: utf-8
# 리스트 자료형
#
# list : [] 안에 원소를 순서대로 나열
# In[1]:
# 리스트 만들기
a = [1, 2, 3]
print(a)
print('type(a) >>> : ', type(a))
# In[2]:
b = ['Life', 'is', 'too', 'short']
print(b)
print('type(b) >>> : ', type(b))
# In[3]:
c = [1, 2, 'Life', 'is', 'too', 'short']
print(c)
print('type(c) >>> : ', type(c))
# In[4]:
d = [1, 2, [3, 4], 'Life', 'is']
print(d)
print('type(d) >>> : ', type(d))
# In[5]:
# 리스트 인덱싱
print(d[0])
print(d[2])
print(d[3])
print(d[3][-1])
# In[6]:
# 리스트 슬라이싱
print(d[0:3])
# In[7]:
# 리스트 연결 : +
print('a + b >>> : ', a + b)
# print(b[0] + " hi~~~~ ^^")
# int + str 은 에러
# Traceback (most recent call last):
# File "C:/00.KOSMO93/50.Python/basic/py/hello_1.py", line 35, in <module>
# print(a[0] + " hi~~~ ^^")
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
# In[8]:
# 리스트 반복 : *
print(a * 30)
# In[9]:
# 리스트 수정
a[2] = 99
print(a)
a[1:2] = ['a', 'b', 'c']
print(a)
a[-1] = ['d', 'e', 'f']
print(a)
# In[10]:
# 삭제 : del
print(a)
del a[-1]
print(a)
# In[11]:
# 원소 추가 : append()
a.append(5)
print(a)
# In[12]:
# 원소 정렬 : short()
print(b)
b.sort()
print(b)
# In[13]:
# 원소 순서 뒤집기 : reverse()
a = [3, 4, 1, 9]
a.reverse()
print(a)
# In[14]:
# 원소 위치 확인 : index()
print(a.index(9))
# In[15]:
# 원소 삽입 : insert(index, x)
a.insert(0, 99)
print(a)
# In[16]:
# 원소 삭제 : remove(x), pop(), pop(i)
a.remove(99)
print(a)
b = [1, 2, 3, 4, 5, 6]
b.pop()
print("원소 삭제 b.pop() >>> : ", b)
b.pop(0)
print("원소 삭제 b.pop(0) >>> : ", b)
# In[17]:
# 특정 원소값의 개수 :count(x)
a = [2, 1, 0, 2, 3, 2, 4, 2]
print(a.count(2))
# 튜플 자료형
#
# tuple : () 안에 원소를 순서대로 나열, 원소값 변경 불가
# In[18]:
# 튜플 만들기
t1 = (1,)
print(t1)
print('type(t1) >>> : ', type(t1))
t2 = (1, 2, 3)
print(t2)
print('type(t2) >>> : ', type(t2))
t3 = 1, 2, 3
print(t3)
print('type(t3) >>> : ', type(t3))
t4 = (1, 2, (3, 4), ('Life', 'is'))
print(t4)
print('type(t4) >>> : ', type(t4))
# In[19]:
# 튜플 인덱싱
print(t4[0])
print(t4[3][-1])
# In[20]:
# 튜플 슬라이싱
print(t4[0:3])
# In[21]:
# 튜플 연결 : +
tt = t1 + t2
print(tt)
# print(t1 + "hi~~~ ^^")
# Traceback (most recent call last):
# File "C:/00.KOSMO93/50.Python/basic/py/hello_1.py", line 131, in <module>
# tt = t1 + "hi~~~ ^^"
# TypeError: can only concatenate tuple (not "str") to tuple
# In[22]:
# 튜플 반복 : *
tt = t2 * 4
print(tt)
# 튜플 수정(불가능)
# t2[2] = 99
# Traceback (most recent call last):
# File "C:/00.KOSMO93/50.Python/basic/py/hello_1.py", line 144, in <module>
# t2[2] = 99
# TypeError: 'tuple' object does not support item assignment
# 딕셔너리 자료형
#
# dictionary : {} 브레이스 안에 key:value
# In[23]:
# 딕셔너리 만들기
dic = {'name':'Hong', 'phone':'01023451234', 'birth':'0814'}
print(dic)
print('type(dic) >>> : ', type(dic))
# In[24]:
# 원소 추가
dic[1] = 'a'
print(dic)
dic['pet'] = 'dog'
print(dic)
# In[25]:
# 원소 삭제 : del
print(dic)
del dic[1]
print(dic)
# In[26]:
# 원소의 value 구하기
print(dic['pet'])
print(dic['name'])
# In[27]:
# key의 리스트 만들기 : keys()
dk = dic.keys()
print('dk >>> : ', dk)
dklist = list(dic.keys())
print('dklist >>> : ', dklist)
# In[28]:
# value의 리스트 만들기 : values()
dv = dic.values()
print('dv >>> : ', dv)
dvlist = list(dic.values())
print('dvlist >>> : ', dvlist)
# In[29]:
# key, value 쌍 구하기 : items()
di = dic.items()
print('di >> : ', di)
# In[30]:
# 원소 삭제 : clear()
dic.clear()
print('dic >>> : ', dic)
# 집합 자료형
#
# set: {} 안에 key만 가지고 있는 형태
# 집합 자료형의 원소는 중복없이 유일해야 하고
# 원소들의 순서를 가지지 않기 때문에 인덱스를 사용할 수 있다.
# 리스트나 문자열에 set() 함수(생성자)를 사용하면 집합 자료형을 만들 수 있다.
# In[31]:
# 집합 만들기
s1 = {1, 2, 'a', 5}
print('s1 >>> : ', s1)
print('type(s1) <<< : ', type(s1))
s2 = set([1, 2, 3, 4, 5, 6])
print('s2 >>> : ', s2)
print('type(s2) >>> : ', type(s2))
s3 = set([4, 5, 6, 7, 8, 9])
print('s3 >>> : ', s3)
print('type(s3) >>> : ', type(s3))
# In[32]:
# 교집합 : & : intersection()
ss = s2 & s3
print("ss >>> : ", ss)
ss1 = s2.intersection(s3)
print("ss1 >>> : ", ss1)
# In[33]:
# 합집합 : | : union()
ss = s2 | s3
print("ss >>> : ", ss)
ss1 = s2.union(s3)
print("ss1 >>> : ", ss1)
# In[34]:
# 차집합 : - : difference()
ss = s2 - s3
print("ss >>> : ", ss)
ss1 = s2.difference(s3)
print("ss1 >>> : ", ss1)
ss2 = s3.difference(s2)
print('ss2 >>> : ', ss2)
# In[35]:
# 원소 한 개 추가 : add(x)
s11 = {1, 2, 3, 4}
print(s11)
s11 = s11.add(5)
print("s11 >>> : ", s11)
# In[36]:
# 우너소 여러 개 추가 : update()
print(s2)
s2.update([5, 6, 7, 8, 9, 10])
print(s2)
# In[37]:
# 특정 원소 제거 : remove()
print(s2)
s2.remove(7)
print(s2)
7교시 (16:30-17:20)
- 프로젝트 회의
- hello_2.ipynb
#!/usr/bin/env python
# coding: utf-8
# In[1]:
# 비교 연산자 : ==, !=, >, <, >=, <=
x = 3
y = 2
z = x = y
print('z >>> : ', z)
print('z >>> : ', x == y)
z =x != y
print('z >>> : ', z)
z = x >= y
print('z >>> : ', z)
# In[2]:
# 조건 연산자 : and, or, not
money = 1300
if money >= 1200 and money < 3500:
print('버스를 탈 수 있습니다.')
# 그룹 자료형의 원소인지 검사하기 : x in 리스트, x in 튜플, x in 문자열
z = 1 in [1, 2, 3]
print('z >>> : ', z)
z = 'x' in [1, 2, 3]
print('z >>> : ', z)
z = 'x' not in [1, 2, 3]
print('z >>> : ', z)
z = 'a' in ('a', 'b', 'c', 'd')
print('z >>> : ', z)
z = 'i' not in 'Python'
print('z >>> : ', z)
# In[3]:
# 아무것도 하지 않게 설정 : pass
if money < 10:
pass
else:
print('지금 하자!!!')
# for
# ```
# for 반복 변수 in 리스트|튜플|문자열:
# 실행할 명령문1
# 실행할 명령문2
# ```
# - number = 0
# - print(%number)
# - % 기호를 활용하여 변수값을 출력할 수 있다.
# - (%d 정수, %f 실수, %s 문자열)
# - %5.2f처럼 출력하는 모양을 지정할 수 있다. (총 자릿수 5, 소수점 2자리까지)
# In[4]:
test_list = ['one', 'two', 'three']
for i in test_list:
x = i + 'i'
print(x)
# In[5]:
number = 0
for score in [90, 25, 67, 45, 93]:
number += 1
if score >= 60:
print('%d 번 학생은 합격입니다 ' %number)
else:
print('%d 번 학생은 불합격입니다 ' %number)
# while
# ```
# while 조건식:
# 실행할 명령문1
# 실행할 명령문2
# ```
# In[6]:
i = 0
while i < 5:
i += 1
print ('*' * i)
8교시 (17:30-18:30)
- hello_3.ipynb
#!/usr/bin/env python
# coding: utf-8
# 함수
# ```
# 인수 개수가 정해진 경우
# def 함수(인수):
# 명령문1
# 명령문2
#
# 인수 개수가 정해지지 않은 경우
# def 함수명(*인수):
# 명령문1
# 명령문2
# ```
# In[1]:
# 함수 정의
def sum1(a, b):
x = a + b
return x
# In[2]:
def sum2(*args):
x = 0
for i in args:
x += i
return x
# In[3]:
# 함수 호출 : 함수명(인수)
a = 5
b = 3
x = sum1(a, b)
print('x >>> : ', x)
x = sum1(3, 5)
print('x >>> : ', x)
x = sum2(1, 2, 3, 4, 5)
print('x >>> : ', x)
x = sum2(2, 3.5, 10)
print('x >>> : ', x)
# In[4]:
# 내장 함수
z = chr(97)
print('z >>> : ', z)
z = chr(48)
print('z >>> : ', z)
z = ord('a')
print('z >>> : ', z)
z = ord('0')
print('z >>> : ', z)
z = oct(8)
print('z >>> : ', z)
z = oct(234)
print('z >>> : ', z)
# In[5]:
# 객체의 id 값
a = 3
z = id(a)
print('z >>> : ', z)
z = int('3')
print('z >>> : ', z)
z = str(3)
print('z >>> : ', z)
z = list('Python')
print('z >>> : ', z)
z = list((1, 2, 3))
print('z >>> : ', z)
z = tuple('Python')
print('z >>> : ', z)
z = tuple([1, 2, 3])
print('z >>> : ', z)
# In[6]:
# c = input()
# c = input('정수를 입력하시오: ')
# print('c >>> : ', c)
z = range(5)
print('range(5) >>> : ', z)
z = list(range(5))
print('list(range(5)) >>> : ', z)
z = list(range(5, 10))
print('list(range(5, 10)) >>> : ', z)
z = list(range(5, 10, 2))
print('list(range(5, 10, 2)) >>> : ', z)
z = list(range(5, 10, 3))
print('list(range(5, 10, 3)) >>> : ', z)
z = len('Python')
print('z >>> : ', z)
s = 'Python is hell '
z = len(s)
print('z >>> : ', z)
z = sorted([3, 0, 2, 1])
print('z >>> : ', z)
z = sorted('Python')
print('z >>> : ', z)
# 모듈 module
#
# 함수나 변수 또는 객체를 정의하는 클래스를 모아놓은 파일
#
# 패키지 package
#
# 모듈을 모아놓은 디렉토리
#
# 파이썬에서 기본으로 제공하는 내장함수 외에 추가 기능을 위한 함수와 변수, 클래스는
# 모듈이나 패키지로 제공되므로 필요한 것은 다운로드한 뒤 임포트 import 해서 사용한다.
# In[7]:
import urllib.request
z = urllib.request.Request('http://www.naver.com')
print('z >>> : ', z)
from datetime import datetime
z = datetime.now()
print('z >>> : ', z)
- hello_4.ipynb
#!/usr/bin/env python
# coding: utf-8
# In[1]:
import keyword
# print(keyword.kwlist)
kwlist = keyword.kwlist
for i in range(0,len(kwlist)):
print("[{:10}]".format(kwlist[i]), end=" ")
if (i+1)%5==0: print()
Notes
728x90