hassan773 commited on
Commit
472d2d5
·
verified ·
1 Parent(s): 925400a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -50
app.py CHANGED
@@ -3,71 +3,56 @@ import math
3
 
4
  st.set_page_config(page_title="Calculator", layout="centered")
5
 
6
- # ---------- Minimal SAFE CSS ---------- #
7
- st.markdown("""
8
- <style>
9
- .calc {
10
- max-width: 360px;
11
- margin: auto;
12
- }
13
- .display {
14
- background: #111;
15
- color: white;
16
- padding: 18px;
17
- font-size: 32px;
18
- border-radius: 14px;
19
- text-align: right;
20
- margin-bottom: 14px;
21
- min-height: 60px;
22
- }
23
- .stButton button {
24
- height: 64px;
25
- font-size: 22px;
26
- border-radius: 16px;
27
- }
28
- </style>
29
- """, unsafe_allow_html=True)
30
-
31
- # ---------- State ---------- #
32
  if "expr" not in st.session_state:
33
- st.session_state.expr = "0"
34
 
35
- def press(v):
36
- if v == "C":
37
- st.session_state.expr = "0"
38
- elif v == "=":
39
  try:
40
  st.session_state.expr = str(eval(st.session_state.expr))
41
  except:
42
  st.session_state.expr = "Error"
43
- elif v == "√":
44
  try:
45
  st.session_state.expr = str(math.sqrt(float(st.session_state.expr)))
46
  except:
47
  st.session_state.expr = "Error"
48
- elif v == "x²":
49
  try:
50
  st.session_state.expr = str(float(st.session_state.expr) ** 2)
51
  except:
52
  st.session_state.expr = "Error"
53
- elif v == "log":
54
  try:
55
  st.session_state.expr = str(math.log10(float(st.session_state.expr)))
56
  except:
57
  st.session_state.expr = "Error"
58
  else:
59
- if st.session_state.expr == "0":
60
- st.session_state.expr = v
61
- else:
62
- st.session_state.expr += v
63
-
64
- st.rerun()
65
 
66
- # ---------- UI ---------- #
67
- st.markdown('<div class="calc">', unsafe_allow_html=True)
68
- st.markdown(f'<div class="display">{st.session_state.expr}</div>', unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
70
- keys = [
 
71
  ["C", "√", "x²", "/"],
72
  ["7", "8", "9", "*"],
73
  ["4", "5", "6", "-"],
@@ -75,10 +60,9 @@ keys = [
75
  ["0", ".", "log", "="]
76
  ]
77
 
78
- for row in keys:
79
  cols = st.columns(4)
80
- for i, k in enumerate(row):
81
- if cols[i].button(k, use_container_width=True):
82
- press(k)
83
-
84
- st.markdown("</div>", unsafe_allow_html=True)
 
3
 
4
  st.set_page_config(page_title="Calculator", layout="centered")
5
 
6
+ # ---------- STATE ----------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  if "expr" not in st.session_state:
8
+ st.session_state.expr = ""
9
 
10
+ def press(key):
11
+ if key == "C":
12
+ st.session_state.expr = ""
13
+ elif key == "=":
14
  try:
15
  st.session_state.expr = str(eval(st.session_state.expr))
16
  except:
17
  st.session_state.expr = "Error"
18
+ elif key == "√":
19
  try:
20
  st.session_state.expr = str(math.sqrt(float(st.session_state.expr)))
21
  except:
22
  st.session_state.expr = "Error"
23
+ elif key == "x²":
24
  try:
25
  st.session_state.expr = str(float(st.session_state.expr) ** 2)
26
  except:
27
  st.session_state.expr = "Error"
28
+ elif key == "log":
29
  try:
30
  st.session_state.expr = str(math.log10(float(st.session_state.expr)))
31
  except:
32
  st.session_state.expr = "Error"
33
  else:
34
+ st.session_state.expr += key
 
 
 
 
 
35
 
36
+ # ---------- DISPLAY ----------
37
+ st.markdown(
38
+ f"""
39
+ <div style="
40
+ background:#111;
41
+ color:white;
42
+ padding:18px;
43
+ font-size:30px;
44
+ border-radius:12px;
45
+ text-align:right;
46
+ margin-bottom:12px;
47
+ ">
48
+ {st.session_state.expr or "0"}
49
+ </div>
50
+ """,
51
+ unsafe_allow_html=True
52
+ )
53
 
54
+ # ---------- BUTTON GRID ----------
55
+ layout = [
56
  ["C", "√", "x²", "/"],
57
  ["7", "8", "9", "*"],
58
  ["4", "5", "6", "-"],
 
60
  ["0", ".", "log", "="]
61
  ]
62
 
63
+ for row in layout:
64
  cols = st.columns(4)
65
+ for i, key in enumerate(row):
66
+ if cols[i].button(key, use_container_width=True):
67
+ press(key)
68
+ st.rerun()