바로 실전에 적용할 수 있는 파이썬 웹 개발 레시피. 기초적인 파이썬 지식이 필요합니다.
앞으로 다룰 내용에서 알아둬야 할 파이썬 기능을 다시 한번 짚고 넘어갑니다. 이미 파이썬 고수라면 건너뛰셔도 좋습니다!
- 모듈
아희로 구현된 ROT13입니다. | |
pyaheui(https://bitbucket.org/lifthrasiir/esotope-aheui/raw/esotope-aheui-5a/esotope-aheui)와 jsaheui(http://jinoh.3owl.com/aheui/jsaheui_ko.html)에서 테스트, 정상 작동을 확인하였습니다. | |
문장을 입력하면 문장의 ROT13 결과가 출력되며, 인터프리터를 종료하기 전까지 계속해서 작동합니다. | |
(jsaheui의 경우 개행이 되지 않지만, pyaheui에서는 입력마다 개행이 됩니다.) |
발발따밤따박박나타삭밤밣따산박밦따밞뚜 #기본 스택 99로 초기화, 공백(32)->ㄱ, (l)108->ㄴ | |
우어어어어어어어어어어어어어어어어어어 | |
아우 #루프의 시작 | |
오사뺘뿌처밞밞따받타맣산빠받다맣삭빠맣산빠박박나다맣빠받다맣빠밦다맣빠밝타맣수 #복제 후, 0일 경우 'No more' 출력 (78 111 32 109 111 114 101) (No more로 변경) | |
오우어명여어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어 #0이 아닐 경우 복제 후 숫자로 출력 | |
오삭빠맣산빠발타발타맣빠받다맣빠밣다빠맣맣빠맣빠밝타맣수 #' bottle' 출력 (32 98 111 116 116 108 101) | |
오우어어어어어어어어어어어어어어멓더벍뻐선처우텨너벅벅뻐 #복제 후, -1이 0이 아닐 경우 's' 출력 (115) | |
오우어어어어어어어어어어어어어어어어어어어어어 | |
오아삭빠맣산빠받다맣빠밦타맣삭빠맣산빠발타발타맣빠밝타빠맣맣빠밦다맣삭빠맣산빠받다맣빠박다뭏 #' of beer on' 출력 (32 111 102 32 98 101 101 114 32 111 110) | |
오뭏뻐멓더벖더벖뻐석멓뻐멓뻐멓터벖터벌뻐멓더벖더벌뻐선멓뻐석멓터벍뻐멓터범뻐멓더벓뻐선멓뻐석 #' the wall, ' 출력 (32 116 104 101 32 119 97 108 108 44 32) |
/** | |
* TODO | |
* optimize algorithm | |
* support negative numbers | |
*/ | |
var readline = require("readline"); | |
var rl = readline.createInterface({input: process.stdin, output: process.stdout, terminal: false}); | |
var cho = {"+": 3, "*": 4, "-": 16, "/": 2, ">": 8}; |
# coding=utf-8 | |
def score(s, encoding=None): | |
if encoding: s = s.encode(encoding) | |
import hashlib; a = hashlib.md5(s).digest() | |
return (int(round(10+ord(a[0])/255.*90)), # 공격 | |
int(round(10+ord(a[5])/255.*90)), # 민첩 | |
int(round(10+ord(a[1])/255.*90)), # 방어 | |
int(round(10+ord(a[2])/255.*90)), # 명중 | |
int(round(10+ord(a[3])/255.*90)), # 운 | |
int(round(100+ord(a[4])/255.*200))) # 체력 |
export PROJECTS_HOME="$HOME/Projects" | |
function has_virtualenv__() { | |
if [[ ${PWD##$PROJECTS_HOME} != $PWD ]]; then | |
IFS="/" read -ra ADDR <<< "${PWD##$PROJECTS_HOME}" | |
venvname=${ADDR[1]} | |
cur_env=${VIRTUAL_ENV##$WORKON_HOME} | |
if [[ $venvname != "" ]] && [[ -d "$WORKON_HOME/$venvname" ]]; then | |
if [[ ${cur_env:1} != $venvname ]]; then | |
workon "$venvname" |
$ python2.7 id_anomaly.py | |
old_func is not new_func | |
('old_func:', 41458576, <bound method classobj.member_func of <class __main__.A at 0x278bf58>>) | |
('new_func:', 41314096, <bound method classobj.member_func of <class __main__.A at 0x278bf58>>) | |
$ python3.2 id_anomaly.py | |
old_func is not new_func | |
old_func: 140100968595896 <bound method type.member_func of <class '__main__.A'>> | |
new_func: 140100968596184 <bound method type.member_func of <class '__main__.A'>> |
# Python 2.5 & 2.6 | |
1/0 # ZeroDivisionError: integer division or modulo by zero | |
1%0 # ZeroDivisionError: integer division or modulo by zero | |
1.0/0 # ZeroDivisionError: float division | |
1.0%0 # ZeroDivisionError: float modulo | |
# Python 2.7 | |
1/0 # ZeroDivisionError: integer division or modulo by zero | |
1%0 # ZeroDivisionError: integer division or modulo by zero | |
1.0/0 # ZeroDivisionError: float division by zero | |
1.0%0 # ZeroDivisionError: float modulo |
# encoding = utf-8 | |
require 'nokogiri' | |
require 'iconv' | |
require 'table_parser' | |
module TableParser | |
class Table | |
def each | |
return unless block_given? |
import re | |
import urllib | |
from bs4 import BeautifulSoup | |
import datetime | |
def read_percentage(soup): | |
return float(re.search(r'\((\d+\.\d+)\)',repr(soup)).groups()[0]) | |
f = urllib.urlopen('http://info.nec.go.kr/electioninfo/electionInfo_report.xhtml?electionId=0020121219&requestURI=%2Felectioninfo%2F0020121219%2Fvc%2Fvccp09.jsp&topMenuId=VC&secondMenuId=VCCP&menuId=VCCP09&statementId=VCCP09_%231&electionCode=1&cityCode=0&sggCityCode=0&x=26&y=8') | |
html = f.read() |