inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

남박사의 파이썬 기초부터 실전 100% 활용

텔레그램 봇 만들기 - 날씨, 환율 응답, 컴퓨터 파일 전송 기능 추가하기

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

285

김명진

작성한 질문수 9

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달러"))

남박사님 python 웹-크롤링

답변 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 이렇게 하신거 같은데요??

한글 변수의 한글 상태를 만드는 법?

0

59

1

38강 = 연산자 더하고 빼기

0

72

2

주석처리

0

129

1

함수의 파라미터값 msg

0

167

1

강의자료 이미지 안나옴

0

251

3

강의자료 질문 두번째

0

176

3

강의자료 관련 질문

0

124

1

파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.

0

248

1

소수 너무 어려워요

0

251

1

imagefont 함수 사용

0

245

1

pylint

0

362

1

add 함수 문의 ㅠㅠ

0

290

1

형식 문의드립니다.

0

220

1

변수 명을 왜 src, tar로 하셨는지 궁금합니다.

0

618

1

숫자야구 코드를 짜 봤는데 뭔가 이상합니다.

0

263

1

zsh: command not found: pylint

0

281

1

텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ

0

555

1

질문드립니다.

1

381

2

list.reverse() 출력에 대해서 질문있습니다.

1

441

1

데코레이터 함수 및 동작시간 질문입니다.~

1

337

2

opencv 사용하면서 궁금한점 (해상도)

1

789

1

질문드립니다.

1

306

1

아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?

1

451

1

크롤링안되는 현상 문의 드립니다.

1

433

1