Как вывести сообщение 'валюта не найдена' при некорректном введении id валюты
Создайте функцию – контекст менеджер, которая будет получать на вход ID
валюты и возвращать информацию о ней в виде:
(1 шт.) Австралийский доллар стоит(ят) 49,2779 руб.
Если такой валюты нет – ошибка должна обрабатываться и выводиться, что такая валюта не найдена
.
Для получения курса валют воспользуйтесь API центробанка:
http://www.cbr.ru/scripts/XML_daily.asp
http://www.cbr.ru/scripts/XML_daily.asp
import contextlib
import requests
from bs4 import BeautifulSoup
from datetime import datetime
url = "http://www.cbr.ru/scripts/XML_daily.asp?"
today = datetime.today()
today = today.strftime("%d/%m/%Y")
payload = {"date_req": today}
response = requests.get(url, params=payload)
xml = BeautifulSoup(response.content, 'lxml')
currency = input('Введите код валюты: ')
valute_name = xml.find('valute', {'id': currency}).charcode.text
@contextlib.contextmanager
def get_course(currency):
try:
yield xml.find("valute", {'id': currency}).value.text
except currency:
print('валюта не найдена')
with get_course(currency) as currency:
print(f"(1 шт.) {valute_name} стоит(ят) {currency} руб.")
Источник: Stack Overflow на русском