Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm hiểu tỷ giá chuyển đổi của hai loại tiền tệ trong Python

Giả sử chúng ta được cung cấp ba mảng; curr_a, curr_b và tỷ lệ chuyển đổi. Mảng đầu tiên chứa một số tên đơn vị tiền tệ và mảng thứ hai cũng vậy, và tỷ lệ chuyển đổi của mảng chứa tỷ lệ chuyển đổi trong một mục curr_a [i] thành cuur_b [i]. Mục tỷ lệ chuyển đổi [i] là tỷ lệ chuyển đổi giữa curr_a [i] và curr_b [i]. Bây giờ, chúng ta được cung cấp hai đơn vị tiền tệ src và dest. Chúng ta phải tìm ra tỷ lệ chuyển đổi từ src thành dest. Chúng tôi trả về giá trị dưới dạng đầu ra và nếu không thể, chúng tôi trả về 0.

Vì vậy, nếu đầu vào là src ="INR", dest ="JPY", curr_a =["INR", "GBP", "EUR"], curr_b =["GBP", "EUR", "JPY"] , conc_rate =[0,009, 1,17, 129,67], thì kết quả đầu ra sẽ là 1,3654250999999997

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • temp:=một bản đồ mới chứa 0 làm giá trị mặc định
  • tạm thời [src]:=1
  • i:=0
  • p:=True
  • while p và i <=size of temp, do
    • p:=Sai
    • đối với mỗi x trong curr_a, y trong curr_b và z trong tỷ lệ chuyển đổi, thực hiện
      • nếu temp [x] * z> temp [y] khác 0 thì
        • temp [y]:=temp [x] * z
        • p:=True
      • i:=i + 1
  • if i <=size of temp, then
    • trả về nhiệt độ [đích]
  • nếu không,
    • trả về -1

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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]))

Đầu vào

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

Đầu ra

1.3654251