반응형



파이썬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 사이에 빈칸 한칸을 넣어줘야 됩니다.


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







+ Recent posts