Spaces:
Sleeping
Sleeping
File size: 1,712 Bytes
f2975f5 9120269 f2975f5 9120269 f2975f5 472d2d5 b1886b7 f2975f5 472d2d5 b1886b7 472d2d5 9120269 b1886b7 9120269 b1886b7 472d2d5 9120269 b1886b7 9120269 b1886b7 472d2d5 a31b831 b1886b7 a31b831 b1886b7 472d2d5 9120269 b1886b7 9120269 b1886b7 a31b831 b1886b7 9120269 472d2d5 b1886b7 472d2d5 9120269 472d2d5 925400a a31b831 472d2d5 9120269 472d2d5 b1886b7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 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()
|