import streamlit as st import math st.set_page_config(page_title="Advanced Calculator", layout="centered") st.title("🧮 Advanced Calculator") st.write("Supports: +, -, *, /, sqrt, power, log, ln") # Select operation operation = st.selectbox( "Choose Operation", ["Addition (+)", "Subtraction (-)", "Multiplication (*)", "Division (/)", "Square Root (sqrt)", "Power (x^y)", "Log base 10 (log)", "Natural Log (ln)"] ) # Input fields if operation in ["Addition (+)", "Subtraction (-)", "Multiplication (*)", "Division (/)"]: num1 = st.number_input("Enter first number") num2 = st.number_input("Enter second number") elif operation == "Power (x^y)": num1 = st.number_input("Enter base") num2 = st.number_input("Enter exponent") else: num1 = st.number_input("Enter number") # Calculate button if st.button("Calculate"): try: if operation == "Addition (+)": result = num1 + num2 elif operation == "Subtraction (-)": result = num1 - num2 elif operation == "Multiplication (*)": result = num1 * num2 elif operation == "Division (/)": if num2 == 0: st.error("Division by zero!") else: result = num1 / num2 st.success(f"Result: {result}") elif operation == "Square Root (sqrt)": if num1 < 0: st.error("Cannot take square root of negative number!") else: result = math.sqrt(num1) st.success(f"Result: {result}") elif operation == "Power (x^y)": result = math.pow(num1, num2) st.success(f"Result: {result}") elif operation == "Log base 10 (log)": if num1 <= 0: st.error("Log undefined for non-positive numbers!") else: result = math.log10(num1) st.success(f"Result: {result}") elif operation == "Natural Log (ln)": if num1 <= 0: st.error("Log undefined for non-positive numbers!") else: result = math.log(num1) st.success(f"Result: {result}") # Show result for basic operations if operation in ["Addition (+)", "Subtraction (-)", "Multiplication (*)"]: st.success(f"Result: {result}") except Exception as e: st.error(f"Error: {e}")