Python Project Temperature Converter - Solutions and Explanations
Temperature converter:
Create a program that converts temperatures between Fahrenheit and Celsius.
Input values:
User provides a temperature and selects the conversion type (Fahrenheit to Celsius or vice versa).
Output value:
Converted the temperature.
Example:
Input values: Enter temperature: 32 Select a conversion type (1 for Fahrenheit to Celsius, 2 for Celsius to Fahrenheit): 1 Output value: Converted temperature: 0.0°C
Here are two different solutions for a temperature converter in Python. The program will allow the user to input a temperature and select the conversion type (Fahrenheit to Celsius or Celsius to Fahrenheit), then output the converted temperature.
Solution 1: Basic Approach Using Conditional Statements
Code:
# Solution 1: Basic Approach Using Conditional Statements
# Function to convert Fahrenheit to Celsius
def fahrenheit_to_celsius(fahrenheit):
# Apply the conversion formula: (F - 32) * 5/9
celsius = (fahrenheit - 32) * 5 / 9
return celsius
# Function to convert Celsius to Fahrenheit
def celsius_to_fahrenheit(celsius):
# Apply the conversion formula: (C * 9/5) + 32
fahrenheit = (celsius * 9 / 5) + 32
return fahrenheit
# Get the temperature from the user
temperature = float(input("Enter temperature: "))
# Ask the user for the conversion type
conversion_type = input("Select a conversion type (1 for Fahrenheit to Celsius, 2 for Celsius to Fahrenheit): ")
# Perform the conversion based on user selection
if conversion_type == '1':
# Convert Fahrenheit to Celsius
converted_temperature = fahrenheit_to_celsius(temperature)
print(f"Converted temperature: {converted_temperature:.1f}°C")
elif conversion_type == '2':
# Convert Celsius to Fahrenheit
converted_temperature = celsius_to_fahrenheit(temperature)
print(f"Converted temperature: {converted_temperature:.1f}°F")
else:
# Handle invalid conversion type selection
print("Invalid selection. Please choose 1 or 2.")
Output:
Enter temperature: 100 Select a conversion type (1 for Fahrenheit to Celsius, 2 for Celsius to Fahrenheit): 1 Converted temperature: 37.8°C
Enter temperature: 37.8 Select a conversion type (1 for Fahrenheit to Celsius, 2 for Celsius to Fahrenheit): 2 Converted temperature: 100.0°F
Explanation:
- Uses two functions, 'fahrenheit_to_celsius()' and 'celsius_to_fahrenheit()', to handle the conversion logic.
- Takes user input for temperature and conversion type, then uses conditional statements ('if-elif-else') to determine which conversion function to call.
- Outputs the converted temperature to the user.
- This solution is simple and straightforward, separating the conversion logic into two functions.
Solution 2: Using a Class to Encapsulate the Conversion Logic
Code:
# Solution 2: Using a Class to Encapsulate the Conversion Logic
class TemperatureConverter:
"""Class to handle temperature conversions between Fahrenheit and Celsius."""
@staticmethod
def fahrenheit_to_celsius(fahrenheit):
"""Convert Fahrenheit to Celsius."""
# Apply the conversion formula: (F - 32) * 5/9
return (fahrenheit - 32) * 5 / 9
@staticmethod
def celsius_to_fahrenheit(celsius):
"""Convert Celsius to Fahrenheit."""
# Apply the conversion formula: (C * 9/5) + 32
return (celsius * 9 / 5) + 32
def convert_temperature(self):
"""Prompt the user for input and perform the desired conversion."""
# Get the temperature from the user
temperature = float(input("Enter temperature: "))
# Ask the user for the conversion type
conversion_type = input("Select a conversion type (1 for Fahrenheit to Celsius, 2 for Celsius to Fahrenheit): ")
# Perform the conversion based on user selection
if conversion_type == '1':
# Convert Fahrenheit to Celsius
converted_temperature = self.fahrenheit_to_celsius(temperature)
print(f"Converted temperature: {converted_temperature:.1f}°C")
elif conversion_type == '2':
# Convert Celsius to Fahrenheit
converted_temperature = self.celsius_to_fahrenheit(temperature)
print(f"Converted temperature: {converted_temperature:.1f}°F")
else:
# Handle invalid conversion type selection
print("Invalid selection. Please choose 1 or 2.")
# Create an instance of the TemperatureConverter class
converter = TemperatureConverter()
# Call the method to perform temperature conversion
converter.convert_temperature()
Output:
Enter temperature: 110 Select a conversion type (1 for Fahrenheit to Celsius, 2 for Celsius to Fahrenheit): 2 Converted temperature: 230.0°F
Enter temperature: 230 Select a conversion type (1 for Fahrenheit to Celsius, 2 for Celsius to Fahrenheit): 1 Converted temperature: 110.0°C
Explanation:
- Defines a 'TemperatureConverter' class that encapsulates all conversion-related functionality.
- Uses static methods 'fahrenheit_to_celsius()' and 'celsius_to_fahrenheit()' for the conversion logic, making them callable without needing an instance of the class.
- The 'convert_temperature()' method handles user input and directs the conversion process based on the selected type.
- This approach makes the code more modular and organized, utilizing Object-Oriented Programming (OOP) principles for better maintainability and extensibility.
Note:
Both solutions provide a way to convert temperatures between Fahrenheit and Celsius, with Solution 1 being a basic approach and Solution 2 offering a more structured, OOP-based design.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics