我必须编写一个函数,使用服务返回货币名称('name'字段(和汇率的最大值https://www.cbr-xml-daily.ru/daily_json.js.
以下是我迄今为止所做的:
import requests
class Rate:
def __init__(self, format_='value'):
self.format = format_
def exchange_rates(self):
self.r = requests.get('https://www.cbr-xml-daily.ru/daily_json.js')
return self.r.json()['Valute']
def make_format(self, currency):
response = self.exchange_rates()
if currency in response:
if self.format == 'full':
return response[currency]
if self.format == 'value':
return response[currency]['Value']
return 'Error'
def eur(self):
return self.make_format('EUR')
def usd(self):
return self.make_format('USD')
def brl(self):
return self.make_format('BRL')
r = Rate(format_='value')
r.brl() # 14.1581
r.eur() # 88.1397
但我不知道如何返回最大价值的货币。
我不确定为什么要创建一个class
来执行此操作,也不确定您到底想要什么,但如果它是最大"Value"
为所有货币的"Name"
,则可以定义如下所示的max_rate()
类方法:
from operator import itemgetter
import requests
class Rate:
def __init__(self, format_='value'):
self.format = format_
def exchange_rates(self):
self.r = requests.get('https://www.cbr-xml-daily.ru/daily_json.js')
return self.r.json()['Valute']
def max_rate(self):
getter = itemgetter('Name', 'Value')
rates = [getter(info) for info in self.exchange_rates().values()]
return max(rates, key=itemgetter(1)) # Return Name, Value with max Value.
r = Rate()
print(r.max_rate())
我想你需要这样的
import requests
class Rate:
def __init__(self, format_='value'):
self.format = format_
def exchange_rates(self):
self.r = requests.get('https://www.cbr-xml-daily.ru/daily_json.js')
return self.r.json()['Valute']
def make_format(self, currency):
response = self.exchange_rates()
if currency in response:
if self.format == 'full':
return response[currency]
if self.format == 'value':
return response[currency]['Value']
return 'Error'
def eur(self):
return self.make_format('EUR')
def usd(self):
return self.make_format('USD')
def brl(self):
return self.make_format('BRL')
def max(self):
x = self.brl()# 14.1581
y = self.eur()# 88.1397
z = self.usd()
if max(x,y,z)==x:
return "Brl"
elif max(x,y,z)==y:
return "EUR"
else:
return "USD"
r = Rate(format_='value')
x = r.brl()# 14.1581
y = r.eur()# 88.1397
z = r.usd()
Max = r.max()
print("Brl ",x)
print("Eur ",y)
print("Usd ",z)
print("Maximum = ",Max)