amberroohee's picture
Create app.py
76ba35e verified
import streamlit as st
import math
st.set_page_config(page_title="Advanced Calculator", page_icon="🧮")
st.title("🧮 Advanced Calculator")
st.write("A simple and powerful calculator built with Streamlit")
# Sidebar for mode selection
mode = st.sidebar.selectbox(
"Select Calculator Mode",
["Basic", "Scientific", "Expression"]
)
# ---------------- BASIC CALCULATOR ----------------
if mode == "Basic":
st.subheader("Basic Calculator")
num1 = st.number_input("Enter first number", value=0.0)
num2 = st.number_input("Enter second number", value=0.0)
operation = st.selectbox(
"Choose operation",
["+", "-", "*", "/", "**", "%"]
)
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:
st.error("Division by zero is not allowed")
result = None
else:
result = num1 / num2
elif operation == "**":
result = num1 ** num2
elif operation == "%":
result = num1 % num2
if result is not None:
st.success(f"Result: {result}")
except Exception as e:
st.error("Something went wrong")
# ---------------- SCIENTIFIC CALCULATOR ----------------
elif mode == "Scientific":
st.subheader("Scientific Calculator")
number = st.number_input("Enter a number", value=0.0)
operation = st.selectbox(
"Choose function",
["sin", "cos", "tan", "sqrt", "log", "exp"]
)
if st.button("Calculate"):
try:
if operation == "sin":
result = math.sin(math.radians(number))
elif operation == "cos":
result = math.cos(math.radians(number))
elif operation == "tan":
result = math.tan(math.radians(number))
elif operation == "sqrt":
if number < 0:
st.error("Cannot calculate square root of negative number")
result = None
else:
result = math.sqrt(number)
elif operation == "log":
if number <= 0:
st.error("Logarithm input must be positive")
result = None
else:
result = math.log(number)
elif operation == "exp":
result = math.exp(number)
if result is not None:
st.success(f"Result: {result}")
except Exception:
st.error("Invalid calculation")
# ---------------- EXPRESSION CALCULATOR ----------------
elif mode == "Expression":
st.subheader("Expression Calculator")
st.write("Example: `3 + 5 * (2 - 1) ** 2`")
expression = st.text_input("Enter expression")
if st.button("Evaluate"):
try:
allowed_chars = "0123456789+-*/().% "
if all(char in allowed_chars for char in expression):
result = eval(expression)
st.success(f"Result: {result}")
else:
st.error("Invalid characters in expression")
except Exception:
st.error("Invalid expression")
st.markdown("---")
st.caption("Built with Streamlit • Deployable on Hugging Face Spaces")