hassan773's picture
Update app.py
b1886b7 verified
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"""
<div style="
background:#111;
color:white;
padding:18px;
font-size:30px;
border-radius:12px;
text-align:right;
margin-bottom:12px;
">
{st.session_state.expr or "0"}
</div>
""",
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()