﻿ Python Project - Currency Converter

# Python Project Currency Converter - Solutions and Explanations

Currency Converter:

Build a program that converts currency from one denomination to another.

Input values:
User provides an amount in one currency and selects the target currency for conversion.

Output value:
Converted the amount to the target currency.

Example:

```Input values:
Enter the amount in USD: 50
Select target currency (1 for EUR, 2 for GBP, 3 for JPY): 2
Output value:
Converted amount in GBP: £37.50
```

Here are two different solutions for a "Currency Converter" program in Python. The program will allow users to input an amount in one currency (e.g., USD) and select a target currency for conversion (e.g., EUR, GBP, JPY). The program will then output the converted amount based on predefined exchange rates.

Solution 1: Basic Approach Using Conditional Statements

Code:

``````# Solution 1: Basic Approach Using Conditional Statements

# Define exchange rates for target currencies (these rates are hypothetical)
USD_TO_EUR = 0.85  # 1 USD = 0.85 EUR
USD_TO_GBP = 0.75  # 1 USD = 0.75 GBP
USD_TO_JPY = 110.0 # 1 USD = 110.0 JPY

# Function to perform currency conversion
def convert_currency(amount, target_currency):
"""Convert USD to the specified target currency."""
if target_currency == '1':
converted_amount = amount * USD_TO_EUR
print(f"Converted amount in EUR: €{converted_amount:.2f}")
elif target_currency == '2':
converted_amount = amount * USD_TO_GBP
print(f"Converted amount in GBP: £{converted_amount:.2f}")
elif target_currency == '3':
converted_amount = amount * USD_TO_JPY
print(f"Converted amount in JPY: ¥{converted_amount:.2f}")
else:
print("Invalid currency selection. Please choose 1, 2, or 3.")

# Get user input for the amount in USD
amount_in_usd = float(input("Enter the amount in USD: "))

# Get user input for the target currency
print("Select target currency (1 for EUR, 2 for GBP, 3 for JPY): ")
target_currency = input("Enter the number corresponding to the target currency: ")

# Perform the conversion
convert_currency(amount_in_usd, target_currency)
``````

Output:

```Enter the amount in USD: 1000
Select target currency (1 for EUR, 2 for GBP, 3 for JPY):
Enter the number corresponding to the target currency: 3
Converted amount in JPY: ¥110000.00
```
```Enter the amount in USD: 1000
Select target currency (1 for EUR, 2 for GBP, 3 for JPY):
Enter the number corresponding to the target currency: 1
Converted amount in EUR: €850.00
```

Explanation:

• Uses a simple function 'convert_currency()' to perform currency conversion based on predefined exchange rates.
• The user inputs an amount in USD and selects the target currency by entering a number corresponding to EUR, GBP, or JPY.
• The program uses conditional statements ('if-elif-else') to check the user's selection and perform the appropriate conversion.
• This approach is straightforward and works well for a small number of currencies, but it may become harder to maintain if more currencies or features are added.

Solution 2: Using a Class to Encapsulate Conversion Logic

Code:

``````# Solution 2: Using a Class to Encapsulate Conversion Logic
class CurrencyConverter:
"""Class to handle currency conversion"""
def __init__(self):
# Define exchange rates for target currencies (these rates are hypothetical)
self.exchange_rates = {
'EUR': 0.85,  # 1 USD = 0.85 EUR
'GBP': 0.75,  # 1 USD = 0.75 GBP
'JPY': 110.0  # 1 USD = 110.0 JPY
}
def convert(self, amount, target_currency):
"""Convert USD to the specified target currency."""
# Check if the target currency is valid
if target_currency in self.exchange_rates:
converted_amount = amount * self.exchange_rates[target_currency]
symbol = '€' if target_currency == 'EUR' else '£' if target_currency == 'GBP' else '¥'
print(f"Converted amount in {target_currency}: {symbol}{converted_amount:.2f}")
else:
print("Invalid currency selection.")
def get_user_input(self):
"""Get user input for amount and target currency, and perform conversion."""
# Get user input for the amount in USD
amount_in_usd = float(input("Enter the amount in USD: "))
# Display the options for target currency
print("Select target currency (EUR, GBP, JPY): ")
target_currency = input("Enter the currency code (e.g., EUR, GBP, JPY): ").upper()
# Perform the conversion
self.convert(amount_in_usd, target_currency)
# Create an instance of the CurrencyConverter class
converter = CurrencyConverter()
# Start the conversion process by getting user input
converter.get_user_input()
``````

Output:

``` Enter the amount in USD: 1000
Select target currency (EUR, GBP, JPY):
Enter the currency code (e.g., EUR, GBP, JPY): GBP
Converted amount in GBP: £750.00
```
```Enter the amount in USD: 1000
Select target currency (EUR, GBP, JPY):
Enter the currency code (e.g., EUR, GBP, JPY): JPY
Converted amount in JPY: ¥110000.00
```

Explanation:

• Defines a 'CurrencyConverter' class to handle the conversion logic, making the code more modular and maintainable.
• The class stores exchange rates in a dictionary ('self.exchange_rates') for easier management and scalability.
• The 'convert()' method performs the conversion and checks for valid target currencies.
• The 'get_user_input()' method handles user input and directs the flow of the program, making it easier to modify or extend the input and output processes.
• This approach provides better structure, modularity, and scalability for adding more currencies or features.
﻿