import streamlit as st import math st.set_page_config(page_title="Calculator", layout="centered") # ---------- STATE ---------- if "expr" not in st.session_state: st.session_state.expr = "" def press(key): if key == "C": st.session_state.expr = "" elif key == "=": try: st.session_state.expr = str(eval(st.session_state.expr)) except: st.session_state.expr = "Error" elif key == "√": try: st.session_state.expr = str(math.sqrt(float(st.session_state.expr))) except: st.session_state.expr = "Error" elif key == "x²": try: st.session_state.expr = str(float(st.session_state.expr) ** 2) except: st.session_state.expr = "Error" elif key == "log": try: st.session_state.expr = str(math.log10(float(st.session_state.expr))) except: st.session_state.expr = "Error" else: st.session_state.expr += key # ---------- DISPLAY ---------- st.markdown( f"""
{st.session_state.expr or "0"}
""", unsafe_allow_html=True ) # ---------- BUTTON GRID ---------- layout = [ ["C", "√", "x²", "/"], ["7", "8", "9", "*"], ["4", "5", "6", "-"], ["1", "2", "3", "+"], ["0", ".", "log", "="] ] for row in layout: cols = st.columns(4) for i, key in enumerate(row): if cols[i].button(key, use_container_width=True): press(key) st.rerun()