用Python编写程序查找两种货币转换率

用Python编写程序查找两种货币转换率

假设我们有三个数组; curr_a,curr_b 和 conv_rate。第一个数组包含一些货币名称,第二个数组也是如此,数组conv_rate包含curr_a [i]到cuur_b [i]之间的转换率。conv_rate [i]的项是curr_a [i]和curr_b [i]之间的转换率。现在,我们得到两个货币src和dest。我们必须找出从src到dest的转换率。我们将值作为输出返回,如果不可能则返回0。

因此,如果输入如下:src=”INR”,dest=”JPY”,curr_a=[“INR”, “GBP”, “EUR”],curr_b=[“GBP”, “EUR”, “JPY”],conv_rate=[0.009,1.17,129.67],则输出为1.3654250999999997。

解决此问题,我们将按照以下步骤进行:

  • temp:包含默认值0的新映射
  • temp[src] =1
  • i=0
  • p=True
  • while p and i<=temp大小,执行
    • p=False
    • 对于数组curr_a中的每个x,数组curr_b中的每个y和数组conv_rate中的每个z,执行以下操作:
      • 如果temp[x] * z>temp[y]非零,则
      • temp[y]=temp[x] * z
      • p=True
      • i=i + 1
  • 如果i <= temp大小,则
    • 返回temp [dest]
  • 否则,
    • 返回-1

示例

让我们看以下实现以更好地理解。

from collections import defaultdict

def solve(src, dest, curr_a, curr_b, conv_rate):
   temp = defaultdict(int)
   temp[src] = 1
   i = 0
   p = True
   while p and i <= len(temp):
      p = False
      for x, y, z in zip(curr_a, curr_b, conv_rate):
         if temp[x] * z > temp[y]:
            temp[y] = temp[x] * z
            p = True
      i += 1
   return temp[dest] if i <= len(temp) else -1

print(solve("INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]))

输入

"INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]

输出

1.3654251

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程