import streamlit as st import math # Page config st.set_page_config(page_title="Scientific Calculator", layout="centered") # --- CSS Styling --- st.markdown(""" """, unsafe_allow_html=True) # --- State --- if "expression" not in st.session_state: st.session_state.expression = "" if "history" not in st.session_state: st.session_state.history = [] # --- Functions --- def add(symbol): st.session_state.expression += str(symbol) def clear(): st.session_state.expression = "" def calculate(): try: expr = st.session_state.expression expr = expr.replace("^", "**").replace("√", "math.sqrt") expr = expr.replace("π", str(math.pi)).replace("e", str(math.e)) expr = expr.replace("ln", "math.log").replace("log", "math.log10") for func in ["sin", "cos", "tan"]: expr = expr.replace(func, f"math.{func}") result = eval(expr) result_str = f"{st.session_state.expression} = {result}" st.session_state.history.insert(0, result_str) st.session_state.expression = str(result) except: st.session_state.expression = "Error" def handle_input(): expr = st.session_state["input_expr"] st.session_state.expression = expr # --- Layout --- st.markdown("