|
| 1 | +""" |
| 2 | +THis program is capable of converting from one currency to another as of today itself. |
| 3 | +It uses the api at fixer.io and then calculates the value of the currency in terms of the other as of today. |
| 4 | +""" |
| 5 | + |
| 6 | +# https://github.com/chavarera/python-mini-projects/issues |
| 7 | +# https://medium.com/@cereblanco/setup-black-and-isort-in-vscode-514804590bf9 |
| 8 | +# Source: https://fixer.io/quickstart |
| 9 | +# Imp read: https://stackoverflow.com/questions/3139879/how-do-i-get-currency-exchange-rates-via-an-api-such-as-google-finance |
| 10 | + |
| 11 | + |
| 12 | +import requests |
| 13 | +import json |
| 14 | +import sys |
| 15 | +from pprint import pprint |
| 16 | + |
| 17 | +# The below 4 lines bring out the value of currency from the api at fixer.io. I had to register there, the key is unique to me. |
| 18 | +url = "http://data.fixer.io/api/latest?access_key=33ec7c73f8a4eb6b9b5b5f95118b2275" |
| 19 | +data = requests.get(url).text |
| 20 | +data2 = json.loads(data) # brings whether request was successful,timestamp etc |
| 21 | +fx = data2["rates"] |
| 22 | +currencies = [ |
| 23 | + "AED : Emirati Dirham,United Arab Emirates Dirham", |
| 24 | + "AFN : Afghan Afghani,Afghanistan Afghani", |
| 25 | + "ALL : Albanian Lek,Albania Lek", |
| 26 | + "AMD : Armenian Dram,Armenia Dram", |
| 27 | + "ANG : Dutch Guilder,Netherlands Antilles Guilder,Bonaire,Curaçao,Saba,Sint Eustatius,Sint Maarten", |
| 28 | + "AOA : Angolan Kwanza,Angola Kwanza", |
| 29 | + "ARS : Argentine Peso,Argentina Peso,Islas Malvinas", |
| 30 | + "AUD : Australian Dollar,Australia Dollar,Christmas Island,Cocos (Keeling) Islands,Norfolk Island,Ashmore and Cartier Islands,Australian Antarctic Territory,Coral Sea Islands,Heard Island,McDonald Islands,Kiribati,Nauru", |
| 31 | + "AWG : Aruban or Dutch Guilder,Aruba Guilder", |
| 32 | + "AZN : Azerbaijan Manat,Azerbaijan Manat", |
| 33 | + "BAM : Bosnian Convertible Mark,Bosnia and Herzegovina Convertible Mark", |
| 34 | + "BBD : Barbadian or Bajan Dollar,Barbados Dollar", |
| 35 | + "BDT : Bangladeshi Taka,Bangladesh Taka", |
| 36 | + "BGN : Bulgarian Lev,Bulgaria Lev", |
| 37 | + "BHD : Bahraini Dinar,Bahrain Dinar", |
| 38 | + "BIF : Burundian Franc,Burundi Franc", |
| 39 | + "BMD : Bermudian Dollar,Bermuda Dollar", |
| 40 | + "BND : Bruneian Dollar,Brunei Darussalam Dollar", |
| 41 | + "BOB : Bolivian Bolíviano,Bolivia Bolíviano", |
| 42 | + "BRL : Brazilian Real,Brazil Real", |
| 43 | + "BSD : Bahamian Dollar,Bahamas Dollar", |
| 44 | + "BTC : Bitcoin,BTC, XBT", |
| 45 | + "BTN : Bhutanese Ngultrum,Bhutan Ngultrum", |
| 46 | + "BWP : Botswana Pula,Botswana Pula", |
| 47 | + "BYN : Belarusian Ruble,Belarus Ruble", |
| 48 | + "BYR : Belarusian Ruble,Belarus Ruble", |
| 49 | + "BZD : Belizean Dollar,Belize Dollar", |
| 50 | + "CAD : Canadian Dollar,Canada Dollar", |
| 51 | + "CDF : Congolese Franc,Congo/Kinshasa Franc", |
| 52 | + "CHF : Swiss Franc,Switzerland Franc,Liechtenstein,Campione d'Italia,Büsingen am Hochrhein", |
| 53 | + "CLF : Chilean Unit of Account", |
| 54 | + "CLP : Chilean Peso,Chile Peso", |
| 55 | + "CNY : Chinese Yuan Renminbi,China Yuan Renminbi", |
| 56 | + "COP : Colombian Peso,Colombia Peso", |
| 57 | + "CRC : Costa Rican Colon,Costa Rica Colon", |
| 58 | + "CUC : Cuban Convertible Peso,Cuba Convertible Peso", |
| 59 | + "CUP : Cuban Peso,Cuba Peso", |
| 60 | + "CVE : Cape Verdean Escudo,Cape Verde Escudo", |
| 61 | + "CZK : Czech Koruna,Czech Republic Koruna", |
| 62 | + "DJF : Djiboutian Franc,Djibouti Franc", |
| 63 | + "DKK : Danish Krone,Denmark Krone,Faroe Islands,Greenland", |
| 64 | + "DOP : Dominican Peso,Dominican Republic Peso", |
| 65 | + "DZD : Algerian Dinar,Algeria Dinar", |
| 66 | + "EGP : Egyptian Pound,Egypt Pound,Gaza Strip", |
| 67 | + "ERN : Eritrean Nakfa,Eritrea Nakfa", |
| 68 | + "ETB : Ethiopian Birr,Ethiopia Birr,Eritrea", |
| 69 | + "EUR : Euro,Euro Member Countries,Andorra,Austria,Azores,Baleares (Balearic Islands),Belgium,Canary Islands,Cyprus,Finland,France,French Guiana,French Southern Territories,Germany,Greece,Guadeloupe,Holland (Netherlands),Holy See (Vatican City),Ireland (Eire),Italy,Luxembourg,Madeira Islands,Malta,Monaco,Montenegro,Netherlands", |
| 70 | + "FJD : Fijian Dollar,Fiji Dollar", |
| 71 | + "FKP : Falkland Island Pound,Falkland Islands (Malvinas) Pound", |
| 72 | + "GBP : British Pound,United Kingdom Pound,United Kingdom (UK),England,Northern Ireland,Scotland,Wales,Falkland Islands,Gibraltar,Guernsey,Isle of Man,Jersey,Saint Helena and Ascension,South Georgia and the South Sandwich Islands,Tristan da Cunha", |
| 73 | + "GEL : Georgian Lari,Georgia Lari", |
| 74 | + "GGP : Guernsey Pound,Guernsey Pound", |
| 75 | + "GHS : Ghanaian Cedi,Ghana Cedi", |
| 76 | + "GIP : Gibraltar Pound,Gibraltar Pound", |
| 77 | + "GMD : Gambian Dalasi,Gambia Dalasi", |
| 78 | + "GNF : Guinean Franc,Guinea Franc", |
| 79 | + "GTQ : Guatemalan Quetzal,Guatemala Quetzal", |
| 80 | + "GYD : Guyanese Dollar,Guyana Dollar", |
| 81 | + "HKD : Hong Kong Dollar,Hong Kong Dollar", |
| 82 | + "HNL : Honduran Lempira,Honduras Lempira", |
| 83 | + "HRK : Croatian Kuna,Croatia Kuna", |
| 84 | + "HTG : Haitian Gourde,Haiti Gourde", |
| 85 | + "HUF : Hungarian Forint,Hungary Forint", |
| 86 | + "IDR : Indonesian Rupiah,Indonesia Rupiah,East Timor", |
| 87 | + "ILS : Israeli Shekel,Israel Shekel,Palestinian Territories", |
| 88 | + "IMP : Isle of Man Pound,Isle of Man Pound", |
| 89 | + "INR : Indian Rupee,India Rupee,Bhutan,Nepal", |
| 90 | + "IQD : Iraqi Dinar,Iraq Dinar", |
| 91 | + "IRR : Iranian Rial,Iran Rial", |
| 92 | + "ISK : Icelandic Krona,Iceland Krona", |
| 93 | + "JEP : Jersey Pound,Jersey Pound", |
| 94 | + "JMD : Jamaican Dollar,Jamaica Dollar", |
| 95 | + "JOD : Jordanian Dinar,Jordan Dinar", |
| 96 | + "JPY : Japanese Yen,Japan Yen", |
| 97 | + "KES : Kenyan Shilling,Kenya Shilling", |
| 98 | + "KGS : Kyrgyzstani Som,Kyrgyzstan Som", |
| 99 | + "KHR : Cambodian Riel,Cambodia Riel", |
| 100 | + "KMF : Comorian Franc,Comorian Franc", |
| 101 | + "KPW : North Korean Won,Korea (North) Won", |
| 102 | + "KRW : South Korean Won,Korea (South) Won", |
| 103 | + "KWD : Kuwaiti Dinar,Kuwait Dinar", |
| 104 | + "KYD : Caymanian Dollar,Cayman Islands Dollar", |
| 105 | + "KZT : Kazakhstani Tenge,Kazakhstan Tenge", |
| 106 | + "LAK : Lao Kip,Laos Kip", |
| 107 | + "LBP : Lebanese Pound,Lebanon Pound", |
| 108 | + "LKR : Sri Lankan Rupee,Sri Lanka Rupee", |
| 109 | + "LRD : Liberian Dollar,Liberia Dollar", |
| 110 | + "LSL : Basotho Loti,Lesotho Loti", |
| 111 | + "LTL : Lithuanian litas", |
| 112 | + "LVL : Latvia Lats", |
| 113 | + "LYD : Libyan Dinar,Libya Dinar", |
| 114 | + "MAD : Moroccan Dirham,Morocco Dirham,Western Sahara", |
| 115 | + "MDL : Moldovan Leu,Moldova Leu", |
| 116 | + "MGA : Malagasy Ariary,Madagascar Ariary", |
| 117 | + "MKD : Macedonian Denar,Macedonia Denar", |
| 118 | + "MMK : Burmese Kyat,Myanmar (Burma) Kyat", |
| 119 | + "MNT : Mongolian Tughrik,Mongolia Tughrik", |
| 120 | + "MOP : Macau Pataca,Macau Pataca", |
| 121 | + "MRU : Mauritanian Ouguiya,Mauritania Ouguiya", |
| 122 | + "MUR : Mauritian Rupee,Mauritius Rupee", |
| 123 | + "MVR : Maldivian Rufiyaa,Maldives (Maldive Islands) Rufiyaa", |
| 124 | + "MWK : Malawian Kwacha,Malawi Kwacha", |
| 125 | + "MXN : Mexican Peso,Mexico Peso", |
| 126 | + "MYR : Malaysian Ringgit,Malaysia Ringgit", |
| 127 | + "MZN : Mozambican Metical,Mozambique Metical", |
| 128 | + "NAD : Namibian Dollar,Namibia Dollar", |
| 129 | + "NGN : Nigerian Naira,Nigeria Naira", |
| 130 | + "NIO : Nicaraguan Cordoba,Nicaragua Cordoba", |
| 131 | + "NOK : Norwegian Krone,Norway Krone,Bouvet Island,Svalbard,Jan Mayen,Queen Maud Land,Peter I Island", |
| 132 | + "NPR : Nepalese Rupee,Nepal Rupee,India (unofficially near India-Nepal border)", |
| 133 | + "NZD : New Zealand Dollar,New Zealand Dollar,Cook Islands,Niue,Pitcairn Islands,Tokelau", |
| 134 | + "OMR : Omani Rial,Oman Rial", |
| 135 | + "PAB : Panamanian Balboa,Panama Balboa", |
| 136 | + "PEN : Peruvian Sol,Peru Sol", |
| 137 | + "PGK : Papua New Guinean Kina,Papua New Guinea Kina", |
| 138 | + "PHP : Philippine Peso,Philippines Peso", |
| 139 | + "PKR : Pakistani Rupee,Pakistan Rupee", |
| 140 | + "PLN : Polish Zloty,Poland Zloty", |
| 141 | + "PYG : Paraguayan Guarani,Paraguay Guarani", |
| 142 | + "QAR : Qatari Riyal,Qatar Riyal", |
| 143 | + "RON : Romanian Leu,Romania Leu", |
| 144 | + "RSD : Serbian Dinar,Serbia Dinar", |
| 145 | + "RUB : Russian Ruble,Russia Ruble,Tajikistan,Abkhazia,South Ossetia", |
| 146 | + "RWF : Rwandan Franc,Rwanda Franc", |
| 147 | + "SAR : Saudi Arabian Riyal,Saudi Arabia Riyal", |
| 148 | + "SBD : Solomon Islander Dollar,Solomon Islands Dollar", |
| 149 | + "SCR : Seychellois Rupee,Seychelles Rupee", |
| 150 | + "SDG : Sudanese Pound,Sudan Pound", |
| 151 | + "SEK : Swedish Krona,Sweden Krona", |
| 152 | + "SGD : Singapore Dollar,Singapore Dollar", |
| 153 | + "SHP : Saint Helenian Pound,Saint Helena Pound", |
| 154 | + "SLL : Sierra Leonean Leone,Sierra Leone Leone", |
| 155 | + "SOS : Somali Shilling,Somalia Shilling", |
| 156 | + "SRD : Surinamese Dollar,Suriname Dollar", |
| 157 | + "STN : Sao Tomean Dobra,São Tomé and Príncipe Dobra", |
| 158 | + "SVC : Salvadoran Colon,El Salvador Colon", |
| 159 | + "SYP : Syrian Pound,Syria Pound", |
| 160 | + "SZL : Swazi Lilangeni,eSwatini Lilangeni", |
| 161 | + "THB : Thai Baht,Thailand Baht", |
| 162 | + "TJS : Tajikistani Somoni,Tajikistan Somoni", |
| 163 | + "TMT : Turkmenistani Manat,Turkmenistan Manat", |
| 164 | + "TND : Tunisian Dinar,Tunisia Dinar", |
| 165 | + "TOP : Tongan Pa'anga,Tonga Pa'anga", |
| 166 | + "TRY : Turkish Lira,Turkey Lira,North Cyprus", |
| 167 | + "TTD : Trinidadian Dollar,Trinidad and Tobago Dollar,Trinidad,Tobago", |
| 168 | + "TWD : Taiwan New Dollar,Taiwan New Dollar", |
| 169 | + "TZS : Tanzanian Shilling,Tanzania Shilling", |
| 170 | + "UAH : Ukrainian Hryvnia,Ukraine Hryvnia", |
| 171 | + "UGX : Ugandan Shilling,Uganda Shilling", |
| 172 | + "USD : US Dollar,United States Dollar,America,American Samoa,American Virgin Islands,British Indian Ocean " |
| 173 | + "Territory,British Virgin Islands,Ecuador,El Salvador,Guam,Haiti,Micronesia,Northern Mariana Islands,Palau," |
| 174 | + "Panama,Puerto Rico,Turks and Caicos Islands,United States Minor Outlying Islands,Wake Island,East Timor", |
| 175 | + "UYU : Uruguayan Peso,Uruguay Peso", |
| 176 | + "UZS : Uzbekistani Som,Uzbekistan Som", |
| 177 | + "VEF : Venezuelan Bolívar,Venezuela Bolívar", |
| 178 | + "VND : Vietnamese Dong,Viet Nam Dong", |
| 179 | + "VUV : Ni-Vanuatu Vatu,Vanuatu Vatu", |
| 180 | + "WST : Samoan Tala,Samoa Tala", |
| 181 | + "XAF : Central African CFA Franc BEAC,Communauté Financière Africaine (BEAC) CFA Franc BEAC,Cameroon," |
| 182 | + "Central African Republic,Chad,Congo/Brazzaville,Equatorial Guinea,Gabon", |
| 183 | + "XAG : Silver Ounce,Silver", |
| 184 | + "XAU : Gold Ounce,Gold", |
| 185 | + "XCD : East Caribbean Dollar,East Caribbean Dollar,Anguilla,Antigua and Barbuda,Dominica,Grenada,The Grenadines " |
| 186 | + "and Saint Vincent,Montserrat", |
| 187 | + "XDR : IMF Special Drawing Rights,International Monetary Fund (IMF) Special Drawing Rights", |
| 188 | + "XOF : CFA Franc,Communauté Financière Africaine (BCEAO) Franc,Benin,Burkina Faso,Ivory Coast," |
| 189 | + "Guinea-Bissau,Mali,Niger,Senegal,Togo", |
| 190 | + "XPF : CFP Franc,Comptoirs Français du Pacifique (CFP) Franc,French Polynesia,New Caledonia,Wallis and " |
| 191 | + "Futuna Islands", |
| 192 | + "YER : Yemeni Rial,Yemen Rial", |
| 193 | + "ZAR : South African Rand,South Africa Rand,Lesotho,Namibia", |
| 194 | + "ZMK : Zambian Kwacha,Zambia Kwacha", |
| 195 | + "ZMW : Zambian Kwacha,Zambia Kwacha", |
| 196 | + "ZWL : Zimbabwean Dollar,Zimbabwe Dollar", |
| 197 | +] |
| 198 | + |
| 199 | + |
| 200 | +# enhancement 3 |
| 201 | +def displays_storage(): |
| 202 | + file2 = open("conversion storage.txt", "r+") |
| 203 | + print(file2.read()) |
| 204 | + file2.close() |
| 205 | + |
| 206 | + |
| 207 | +# The below function calculates the actual conversion |
| 208 | +def function1(): |
| 209 | + query = input( |
| 210 | + "Please specify the amount of currency to convert, from currency, to currency (with space in between).\nPress " |
| 211 | + "SHOW to see list of currencies available. \n press DISPLAY to see previous transactions" |
| 212 | + "\nPress Q to quit. \n ") |
| 213 | + if query == "Q": |
| 214 | + sys.exit() |
| 215 | + elif query == "SHOW": |
| 216 | + pprint(currencies) |
| 217 | + function1() |
| 218 | + elif query == "DISPLAY": |
| 219 | + displays_storage() |
| 220 | + function1() |
| 221 | + |
| 222 | + else: |
| 223 | + qty, fromC, toC = query.split(" ") |
| 224 | + fromC = fromC.upper() |
| 225 | + toC = toC.upper() |
| 226 | + qty = float(round(int(qty), 2)) |
| 227 | + amount = round(qty * fx[toC] / fx[fromC], 2) |
| 228 | + # opening the file in append mode |
| 229 | + file1 = open("conversion storage.txt", "a") |
| 230 | + # storing the cash conversion data |
| 231 | + file1.write(f"{qty} of currency {fromC} amounts to {amount} of currency {toC} today\n") |
| 232 | + # closes file after use |
| 233 | + file1.close() |
| 234 | + print(f"{qty} of currency {fromC} amounts to {amount} of currency {toC} today") |
| 235 | + |
| 236 | + |
| 237 | +try: |
| 238 | + function1() |
| 239 | +except KeyError: |
| 240 | + print("You seem to have inputted wrongly, retry!") |
| 241 | + function1() |
0 commit comments