• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

환율정보 어디가 문제 인지 ㅠㅠ 원인을 찾기가 어려워요 ㅠㅠ 도와주세요

22.02.27 08:33 작성 조회수 181

1

강사님 ㅠㅠ 어디가 원인일까요 ?
 
boy.py 에는
            elif command == "/money" or command =="/환율":
                w = " ".join(args)
                output = module.money_translate(w)
                bot.sendMessage(chat_id, output)
이렇게 넣었고요,,,
 
module.py 에는 아래와 같이 넣었는데 ㅠㅠ
계속
            money = format(round(float(money) * float(keywords[0]), 3), ",")
오류가 나타나요,,,강사님처럼 홍콩달라를 했는데도 나타나서 ㅠㅠ
그냥 더 간단하게 했는데도 그러네요 ㅠㅠ
File "/home/Ammasters/telegram_file/bot.py", line 40, in handler output = module.money_translate(w) File "/home/Ammasters/telegram_file/./module.py", line 97, in money_translate money = format(round(float(money) * float(keywords[0]), 3), ",")ValueError: could not convert string to float: '/money 1'
 
MONEY_NAME = {
    "달러": "미국 USD",
    "유로": "유럽연합 EUR",
    "엔": "일본 JPY(100엔)",
    "위안": "중국 CNY",
    "파운드": "영국 GBP",    
}

def get_exchange_info():
    EXCHANGE_LIST = {}
    url = "https://finance.naver.com/marketindex//exchangeList.nhn"
    r = requests.get(url)
    bs = BeautifulSoup(r.text, "lxml")
    trs = bs.select("table.tbl_exchange > tbody > tr")
    for tr in trs:
        tds = tr.select("td")
        name = tds[0].text.strip()
        value = tds[1].text.strip().replace(",","")
        EXCHANGE_LIST[name] = value
    return EXCHANGE_LIST

def money_translate(keyword):
    EXCHANGE_LIST = get_exchange_info()
    keywords = []
    for m in MONEY_NAME.keys():
        if m in keyword:
            keywords.append(keyword[0:keyword.find(m)].strip())
            keywords.append(m)
            break
   
    if keywords[1] in MONEY_NAME:
        country = MONEY_NAME[keywords[1]]

        if country in EXCHANGE_LIST:
            money = float(EXCHANGE_LIST[country])
            if country == "일본 JPY (100엔)":
                money /= 100

            money = format(round(float(money) * float(keywords[0]), 3), ",")
            output ="{} 원".format(money)
            return output

if __name__ == "__main__":
    print(money_translate("150달러"))

답변 1

답변을 작성해보세요.

0

일단 코드는 아무 문제 없이 동작하는 걸로 봐서 뭔가 테스트할때 잘못 하시고 계신거 같습니다만..

 

"/home/Ammasters/telegram_file/./module.py", line 97, in money_translate money = format(round(float(money) * float(keywords[0]), 3), ",")ValueError: could not convert string to float: '/money 1'

 

오류 내용은 string 을 float로 못 바꾼다고 하는 내용인데 입력을 /money 1 이렇게 하신거 같은데요??