Помогите пожалуйста! На языке PYTHON написать код
Зайдите на сайт Национального банка вашей страны и найдите информацию о курсе валют. Сделайте парсинг этой страницы и получите курс доллара США. На основе получения информации реализуйте класс конвертера валют и. после запуска программы пользователь вводит в консоль количество валюты своей страны, а в результате на экран выводится соответствующая ей сумма в долларах США.
Answers & Comments
Для парсинга веб-страницы мы будем использовать библиотеку BeautifulSoup. А для запросов на веб-страницу, мы будем использовать библиотеку requests.
import requests
from bs4 import BeautifulSoup
class CurrencyConverter:
def __init__(self):
self.url = 'https://www.cbr.ru/currency_base/daily/'
self.currency_dict = {}
self.get_currency_dict()
def get_currency_dict(self):
response = requests.get(self.url)
soup = BeautifulSoup(response.content, 'html.parser')
table = soup.find('table', {'class': 'data'})
rows = table.tbody.find_all('tr')
for row in rows:
cols = row.find_all('td')
if len(cols) > 1:
currency_name = cols[1].text.strip()
currency_rate = cols[4].text.strip().replace(',', '.')
self.currency_dict[currency_name] = float(currency_rate)
def convert(self, amount, from_currency, to_currency):
initial_amount = amount
if from_currency != 'USD':
amount = amount / self.currency_dict[from_currency]
# limiting the precision to 4 decimal places
amount = round(amount * self.currency_dict[to_currency], 4)
return amount
# Пример использования класса конвертера валют
currency_converter = CurrencyConverter()
print(currency_converter.convert(1000, 'RUB', 'USD')) # конвертируем 1000 российских рублей в доллары США
Обратите внимание, что данный код работает только для Центрального Банка Российской Федерации. Если вам нужно получить курсы валют другой страны, вам нужно изменить URL, который используется для запросов на страницу, и, возможно, изменить структуру HTML-разметки страницы для парсинга информации.
Ответ:
mport requests
class CurrencyConverter:
def __init__(self):
self.rates = {}
def get_rates(self):
response = requests.get("https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json")
data = response.json()
for item in data:
self.rates[item['cc']] = item['rate']
def convert(self, amount, from_currency, to_currency):
if from_currency != "USD":
amount = amount / self.rates[from_currency]
amount = round(amount * self.rates[to_currency], 2)
return amount
converter = CurrencyConverter()
converter.get_rates()
while True:
try:
amount = float(input("Enter the amount of currency: "))
from_currency = input("Enter the currency code of the amount you entered: ")
to_currency = "USD"
converted_amount = converter.convert(amount, from_currency.upper(), to_currency)
print("The amount of {} {} is equal to {:.2f} USD".format(amount, from_currency.upper(), converted_amount))
break
except KeyError:
print("Invalid currency code entered. Please try again.")
except ValueError:
print("Invalid amount entered. Please try again.")
Объяснение: