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()