반응형



파이썬3로 만들어본 간단한 환율 계산기 입니다. 환율 자료는 외환은행의 html 페이지를 간단히 파싱해서 사용하였습니다.


프로그램은 콘솔에서 작동하며 간단히 만들어 본것이라 변환된 값을 너무 신뢰하진 마시길 바랍니다.

요즘 프로그램을 너무 안하기도 했고, 파이썬 써본지도 꽤 되어서 그래도 가끔은 연습을 해 줘야 하지 않나...싶어서 한번 만들어 본것이니까요. ^^;


그런데 확실히 파이썬 편하긴 하네요. c 나 c++ 도 좀 해볼까 했더니 너무 귀찮다고 해야 하나.....불편하다고 해야 하나....^^;



import http.client
 
conn = http.client.HTTPConnection("community.fxkeb.com")
conn.request("GET","/fxportal/jsp/RS/DEPLOY_EXRATE/fxrate_all.html")
r = conn.getresponse()
hdata = r.read()
hdata2  = str(hdata,'euc-kr')   #웹데이터가 euc-kr 이라 변환해줌. 이 프로그램에선 안해줘도 상관은 없을것 같다.
 
fs = '<td width="420" height="28"><b><font color="#48668F">['
index1 = hdata2.find(fs)
index2 = hdata2.find(']<',index1)
 
cdate = hdata2[index1 + len(fs):index2]
cdate = cdate.replace("&nbsp;"," ")
 
fs = '<table width="100%" border="0" cellspacing="0" cellpadding="0" class="table">'
index1 = hdata2.find(fs)
index2 = hdata2.find('</table>',index1)
 
tb = hdata2[index1+len(fs):index2]
 
tbsp = tb.split("</tr>")
del tbsp[0:2]  #환율표의 컬럼 항목이므로 계산에선 쓸일이 없다. 삭제
 
a=[]
va=[]
for t in tbsp:
    idx3=0
    while(1):
        idx1 = t.find('<td',idx3)
        if idx1 == -1 :
            if len(a) > 0 :
                va.append(a.copy())
            break
        idx2 = t.find('>',idx1)
        idx3 = t.find("<" ,idx2)
        a.append(t[idx2+1:idx3].replace("&nbsp;","").replace("\n","").replace("\t","").lstrip().rstrip())
 
    a.clear()       
 
va[1][6] = float(va[1][6]) /100  #일본 엔화는 100 에 대한 환율임
 
while(1):
    print("\n환율 기준 날짜 : {}".format(cdate))
    print("\n입력방법 : 숫자 변환하고싶은통화(예: 25 usd , 30 eur)")
    print("usd : 미국 , jpy : 일본 , eur : 유로 , cny : 중국 , gbp : 영국")
    print("프로그램 종료 : e 혹은 q 입력")
    print("\n입력 : ",end=" ")
    cur=input()
   
    if cur in ['e','q']:
        print("\n프로그램을 종료합니다.\n")
        break
   
    scur = cur.split(" ")
 
    if len(scur) < 2 :
        print("\n입력 오류. 형식에 맞게 입력해 주세요.\n")
        print("-"*60)
        continue
      
    sc = -1
    if scur[1] == "usd":
        sc = 0
    elif scur[1] == "jpy":
        sc = 1
    elif scur[1] == "eur":
        sc = 2
    elif scur[1] == "cny":
        sc = 3
    elif scur[1] == "gbp":
        sc = 4
 
    if sc == -1:
        print("\n입력오류입니다. 정확하게 입력해 주세요.\n")
        print("-"*60)
        continue
    try:   
        print("\n{0:,.2f} 원".format(float(va[sc][6]) * float(scur[0])))
    except ValueError:
        print("\n숫자를 입력해 주세요.\n")
       
    print("-"*60)   





프로그램은 터미널(콘솔)에서 실행됩니다. 위 소스를 적당한 이름으로 저장하시고 터미널을 여신후에


python3 프로그램이름.py


형식으로 실행하면 됩니다. 물론 파이썬3는 설치되어 있어야 하고, 리눅스의 경우는 대부분 기본으로 설치되어 있습니다.


프로그램 사용방법은 위 스샷에 다 설명되어 있고, 실제 실행하면 설명이 나오니 간단히 설명하자면.....

2.99 달러가 현재 국내 원화로 얼마인지를 보고 싶으면 "2.99 usd" 형식으로 입력하면 됩니다. 2.99 와 usd 사이에 빈칸 한칸을 넣어줘야 됩니다.


어차피 내가 보려고 남겨놓는거니까 설명은 이정도로만 하겠습니다. ^^;







반응형


2019년 8월 내용을 수정합니다.


시간이 오래 지나다 보니 대부분의 링크가 깨져 있어서 모두 삭제했습니다.

확인 결과 살아 있는 링크는 https://wikidocs.net/ 하나 뿐이군요. ㅡㅡ;


예전 점프 투 파이썬은 2.x 버전을 다루고 있었지만, 시간이 지난만큼 시대에 맞추어서 2.x 버전에서 3.x 버전으로 모두 개편되어 있습니다.


그외에 다른 파이썬 서적들도 추가되었으며 파이썬외의 책들도 추가되어 있으므로 다른 분야에 관심있으신 분들도 도움이 될것 같습니다.



반응형


국내 라디오 방송을 스트리밍으로 들으려면 기본적으로 윈도우에서 전용프로그램을 이용해야 합니다. 리눅스나 맥용 프로그램은 없습니다.

최근 윈도우가 아닌 환경에서 듣는 방법을 알려주는 블로그를 발견했습니다.

http://mielikki.tistory.com/197

발견하고 php 소스를 보니 웹페이지로 만들지 않고 프로그램으로 만들수도 있을것 같아 python 으로 만들어 보기로 했습니다. 간단한 연습겸 httplib 도 좀 써보고 싶어서요.

#!/usr/bin/python

import httplib
import subprocess
import sys

def CreateProcess(command):
    try:
        p = subprocess.Popen(command,shell=True)
    except OSError,e:
        print "oserror"

args = sys.argv

if len(args) < 2 :
    ch = 2
else :
    ch = args[1]

conn = httplib.HTTPConnection('kbs xx주소',80)
conn.request("GET","/xxxxxx/xxxxxxxxxx?id=xxxxx&channel=%s"%ch)
r1 = conn.getresponse()
st = r1.read()
conn.close()

index1 = st.find("mms:")
address = st[index1:]

arg = "totem %s"%address
CreateProcess(arg)

파이썬으로 하니 간단히 되는군요.

간단히 설명하면 httplib 라이브러리로 스트리밍 주소를 얻어서 totem 으로 그 주소를 넘겨 재생하게 하는 방식입니다. 리눅스에서 작성했기에 totem 을 쓰도록 했고 윈도우의 경우엔 조금만 수정해 주면 됩니다.

스트리밍 주소인 mms:// 를 얻었으면 다음부턴 그냥 그걸 쓰면 되지 않느냐고 생각하시겠지만 그렇게 얻은 주소를 나중에 사용하려고 하면 에러가 발생하며 재생이 안됩니다. 제 경우엔 이 프로그램을 써도 가끔 안되는 경우가 있더군요. 그땐 다시 시도해 보면 됩니다.

mms:// 주소를 얻는 부분은 kbs 가 딴지를 걸 경우를 대비해 xxx 로 처리해 두었는데 실제 사용하시겠다면 그 부분을 수정해 주면 되고 실제 주소는 위의 링크를 보시면 아실수 있습니다. 뭐...실제로 딴지를 걸만한 근거가 있는지는 모르겠는데 가급적 성가신일은 피하고 싶어서 그런것이니 양해를 바랍니다. ^^;

사용법은 파일이름을 kbsradio.py 라고 가정하면 .....

kbsradio.py 1
kbsradio.py 2


이런식으로 1 채널과 2채널을 선택해 주면 됩니다. 만일 뒤의 인자가 없을 경우 2 채널로 연결됩니다.

나중에 kbs에서 연결방식을 바뀌게 되면 언제든 이 프로그램은 작동하지 않을수 있습니다.

 

반응형

영문사이트 입니다.
좀 잘 알려져있는 Dive Into Python 3 입니다. 웹에서 바로 보실 수도 있고 사이트에서 HTML버전과 PDF 버전을 받아 보실 수도 있습니다.

http://diveintopython3.org/

python 3 버전이 나온지 좀 되었는데 아직 많이 사용되는건 2.6 버전쪽인것 같습니다. 3 버전은 좀 바뀐점도 여럿있다보니...wxpython 도 아직 2.6버전용만 있고 3 버전용은 없더군요.



이책의 2.x 버전용은 한글로 번역이 되어 있는데요.

http://wikidocs.net/mybook/read/index?pageid=4969

여기서 보실수 있습니다.


2013년 12월 13일 수정사항

지금은 링크가 많이 바뀌어 있더군요. 그래서 링크를 수정한 새로운 포스팅을 해 두었습니다.

새로운 포스팅 링크



+ Recent posts