Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import math | |
| def main(): | |
| st.set_page_config(page_title="Advanced Calculator", page_icon="🔢") | |
| st.title("🧮 Math Mastery Calculator") | |
| st.write("Perform basic and advanced arithmetic operations.") | |
| # Layout: Two columns for numbers | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| num1 = st.number_input("Enter first number (x)", value=0.0) | |
| with col2: | |
| num2 = st.number_input("Enter second number (y)", value=0.0) | |
| # Expanded operator selection | |
| operation = st.selectbox( | |
| "Choose an operation", | |
| ("+", "-", "*", "/", "** (Power)", "% (Modulo)", "√ (Square Root of x)") | |
| ) | |
| result = None | |
| error_msg = None | |
| if st.button("Calculate"): | |
| try: | |
| if operation == "+": | |
| result = num1 + num2 | |
| elif operation == "-": | |
| result = num1 - num2 | |
| elif operation == "*": | |
| result = num1 * num2 | |
| elif operation == "/": | |
| if num2 != 0: | |
| result = num1 / num2 | |
| else: | |
| error_msg = "Division Error: You can't divide by zero!" | |
| elif operation == "** (Power)": | |
| result = math.pow(num1, num2) | |
| elif operation == "% (Modulo)": | |
| result = num1 % num2 | |
| elif operation == "√ (Square Root of x)": | |
| if num1 >= 0: | |
| result = math.sqrt(num1) | |
| else: | |
| error_msg = "Math Error: Cannot calculate square root of a negative number!" | |
| except Exception as e: | |
| error_msg = f"An error occurred: {e}" | |
| # Display results with nice formatting | |
| if error_msg: | |
| st.error(error_msg) | |
| elif result is not None: | |
| st.balloons() # Just for a bit of fun on success | |
| st.success(f"### Result: {result}") | |
| # Adding a little tip section | |
| with st.expander("Operation Help"): | |
| st.write(""" | |
| * **Power**: Raises the first number to the power of the second ($x^y$). | |
| * **Modulo**: Returns the remainder after division. | |
| * **Square Root**: Only calculates the root of the **first** number provided. | |
| """) | |
| if __name__ == "__main__": | |
| main() |