Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.52 KB | None | 0 0
  1. # importing required libraries
  2. import requests
  3. import pycountry
  4. from _datetime import datetime
  5. from babel import numbers
  6.  
  7.  
  8. def error_sev():
  9. print("Sorry! There seems to be an error. Please check if your network is working")
  10.  
  11.  
  12. def error_inp():
  13. print("Sorry! There seems to be an error. Please check if the currencies entered are valid.")
  14.  
  15.  
  16. def currency_print(input_cur, output_cur, input_currency_name, output_currency_name, amount, rate):
  17. # printing out exchange rate
  18. print("The rate for {} to {} as on {} is: "
  19. .format(input_currency_name, output_currency_name, date.strftime("%d-%m-%Y")), end='')
  20. print(numbers.format_currency(1, input_cur, locale='en') + " = " +
  21. numbers.format_currency(rate, output_cur, locale='en'))
  22.  
  23. # printing converted value
  24. print("\t", end='')
  25. print(numbers.format_currency(amount, input_cur, locale='en') + " = " +
  26. numbers.format_currency(amount * rate, output_cur, locale='en'))
  27.  
  28. print('-'*100)
  29.  
  30.  
  31. # list of available currencies
  32. currencies = [
  33. 'USD', 'JPY', 'BGN', 'CZK', 'DKK', 'GBP', 'HUF', 'PLN', 'RON', 'SEK', 'CHF', 'NOK', 'HRK', 'RUB', 'TRY',
  34. 'AUD', 'BRL', 'CAD', 'CNY', 'HKD', 'IDR', 'ILS', 'INR', 'KRW', 'MXN', 'MYR', 'NZD', 'PHP', 'SGD', 'THB',
  35. 'ZAR', 'ISK'
  36. ]
  37.  
  38. # printing the list of available currencies for the user
  39. print("Available currencies: ", end='')
  40. for item in sorted(currencies)[:-1]:
  41. print(item, end=', ')
  42. print(sorted(currencies)[-1])
  43.  
  44. # taking user input
  45. try:
  46. amount = float(input("Enter amount: "))
  47. # checking for input errors
  48. except ValueError:
  49. print("Invalid input. Please enter only numbers.")
  50.  
  51. else:
  52. # taking currency values as input from user
  53. input_cur = input("Enter base currency code: ").upper()
  54. output_cur = input("Enter desired currency code (leave blank for all currencies): ").upper()
  55.  
  56. # if user has specified desired currency
  57. if output_cur != '':
  58. response_url = "http://api.fixer.io/latest?base={}&symbols={}".format(input_cur, output_cur)
  59. response = requests.get(response_url)
  60. # checking for validity of inputs
  61.  
  62. if output_cur in currencies and input_cur in currencies:
  63.  
  64. # checking for validity of server
  65. if response.status_code is 200:
  66. # parsing JSON response
  67. data = response.json()
  68. date = datetime.strptime(data['date'], "%Y-%m-%d")
  69.  
  70. rate = data['rates'][output_cur]
  71.  
  72. print('-' * 100)
  73.  
  74. # Getting currency names
  75. input_currency_name = pycountry.currencies.get(alpha_3=input_cur).name
  76. output_currency_name = pycountry.currencies.get(alpha_3=output_cur).name
  77.  
  78. currency_print(input_cur, output_cur, input_currency_name, output_currency_name, amount, rate)
  79. else:
  80. # printing a server error
  81. error_sev()
  82. else:
  83. # printing an input error
  84. error_inp()
  85.  
  86. # if user has not specified desired currency, print out all conversions
  87. else:
  88. response_url = "http://api.fixer.io/latest?base={}".format(input_cur)
  89. response = requests.get(response_url)
  90.  
  91. # checking for input validity
  92. if input_cur in currencies:
  93.  
  94. # checking for validity of inputs and server
  95. if response.status_code is 200:
  96. # parsing JSON response
  97. data = response.json()
  98. date = datetime.strptime(data['date'], "%Y-%m-%d")
  99.  
  100. print('-' * 100)
  101.  
  102. # looping through all rates
  103. rates = data['rates']
  104. for rate in sorted(rates):
  105.  
  106. cur_rate = rates[rate]
  107. input_currency_name = pycountry.currencies.get(alpha_3=input_cur).name
  108. output_currency_name = pycountry.currencies.get(alpha_3=rate).name
  109.  
  110. print("{} ({})".format(output_currency_name, rate))
  111. print("\t", end='')
  112.  
  113. currency_print(input_cur, rate, input_currency_name, output_currency_name, amount, cur_rate)
  114.  
  115. else:
  116. # printing a server error
  117. error_sev()
  118. else:
  119. # printing an input error
  120. error_inp()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement