Kvikontent commited on
Commit
3dcce9c
·
verified ·
1 Parent(s): fda41b8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -82
app.py CHANGED
@@ -1,116 +1,43 @@
1
  import streamlit as st
2
 
3
  def add(a, b):
4
- if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
5
- return "Invalid input: Please enter only numbers."
6
  return a + b
7
 
8
  def subtract(a, b):
9
- if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
10
- return "Invalid input: Please enter only numbers."
11
  return a - b
12
 
13
  def multiply(a, b):
14
- if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
15
- return "Invalid input: Please enter only numbers."
16
  return a * b
17
 
18
  def divide(a, b):
19
- if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
20
- return "Invalid input: Please enter only numbers."
21
  if b == 0:
22
  return "Error: Division by zero"
23
  return a / b
24
 
25
- def exponentiation(a, b):
26
- if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
27
- return "Invalid input: Please enter only numbers."
28
- return a ** b
29
 
30
- def square_root(a):
31
- if not isinstance(a, (int, float)):
32
- return "Invalid input: Please enter only numbers."
33
- if a < 0:
34
- return "Error: Square root of negative number not possible."
35
- return a ** 0.5
36
-
37
- st.title("Advanced Functional Calculator")
38
-
39
- # Clear layout using columns
40
  col1, col2 = st.columns(2)
41
 
42
- # Input fields
43
  first_number = col1.number_input("Enter first number", key="first_number")
44
- second_number = col2.number_input("Enter second number (optional)", key="second_number")
45
 
46
- # Buttons with descriptions
47
  add_button = st.button("Add", key="add_button")
48
  subtract_button = st.button("Subtract", key="subtract_button")
49
  multiply_button = st.button("Multiply", key="multiply_button")
50
  divide_button = st.button("Divide", key="divide_button")
51
- exp_button = st.button("Exponentiation", key="exp_button")
52
- sqrt_button = st.button("Square Root", key="sqrt_button")
53
 
54
- # Robust input validation and calculation based on buttons
55
  if add_button:
56
  result = add(first_number, second_number)
57
- if isinstance(result, str): # Display error message if validation failed
58
- st.error(result)
59
- else:
60
- st.write("Result:", result)
61
  elif subtract_button:
62
  result = subtract(first_number, second_number)
63
- if isinstance(result, str):
64
- st.error(result)
65
- else:
66
- st.write("Result:", result)
67
  elif multiply_button:
68
  result = multiply(first_number, second_number)
69
- if isinstance(result, str):
70
- st.error(result)
71
- else:
72
- st.write("Result:", result)
73
  elif divide_button:
74
  result = divide(first_number, second_number)
75
- if isinstance(result, str):
76
- st.error(result)
77
- else:
78
- st.write("Result:", result)
79
- elif exp_button:
80
- result = exponentiation(first_number, second_number)
81
- if isinstance(result, str):
82
- st.error(result)
83
- else:
84
- st.write("Result:", result)
85
- elif sqrt_button:
86
- result = square_root(first_number)
87
- if isinstance(result, str):
88
- st.error(result)
89
- else:
90
- st.write("Result:", result)
91
-
92
- # History using SessionState
93
- session_state = st.session_state
94
- if "calc_history" not in session_state:
95
- session_state.calc_history = []
96
-
97
- # Update history on each calculation
98
- if result and not isinstance(result, str):
99
- session_state.calc_history.append(f"{first_number} {add_button.text if add_button else '', subtract_button.text if subtract_button else '', multiply_button.text if multiply_button else '', divide_button.text if divide_button else '', exp_button.text if exp_button else '', sqrt_button.text if sqrt_button else ''} {second_number} = {result}")
100
-
101
- # Display history
102
- if session_state.calc_history:
103
- st.subheader("Calculation History:")
104
- for entry in session_state.calc_history:
105
- st.write(entry)
106
-
107
- # Customization options
108
- st.subheader("Customization:")
109
- font_size = st.number_input("Font size", min_value=10, max_value=20, value=16, key="font_size")
110
- st.write("Current font size:", font_size)
111
- primary_color = st.color_picker("Primary color", key="primary_color")
112
- st.write("Current primary color:", primary_color)
113
-
114
- # Update layout based on customization
115
- st.markdown(f"<style>.stApp {{ font-size: {font_size}px; color: {primary_color}; }}</style>", unsafe_allow_html=True)
116
-
 
1
  import streamlit as st
2
 
3
  def add(a, b):
 
 
4
  return a + b
5
 
6
  def subtract(a, b):
 
 
7
  return a - b
8
 
9
  def multiply(a, b):
 
 
10
  return a * b
11
 
12
  def divide(a, b):
 
 
13
  if b == 0:
14
  return "Error: Division by zero"
15
  return a / b
16
 
17
+ st.title("Functional Calculator")
 
 
 
18
 
 
 
 
 
 
 
 
 
 
 
19
  col1, col2 = st.columns(2)
20
 
21
+ # Display input fields
22
  first_number = col1.number_input("Enter first number", key="first_number")
23
+ second_number = col2.number_input("Enter second number", key="second_number")
24
 
25
+ # Create buttons with clear and concise labels
26
  add_button = st.button("Add", key="add_button")
27
  subtract_button = st.button("Subtract", key="subtract_button")
28
  multiply_button = st.button("Multiply", key="multiply_button")
29
  divide_button = st.button("Divide", key="divide_button")
 
 
30
 
31
+ # Perform calculations based on button clicks
32
  if add_button:
33
  result = add(first_number, second_number)
34
+ st.write("Result:", result)
 
 
 
35
  elif subtract_button:
36
  result = subtract(first_number, second_number)
37
+ st.write("Result:", result)
 
 
 
38
  elif multiply_button:
39
  result = multiply(first_number, second_number)
40
+ st.write("Result:", result)
 
 
 
41
  elif divide_button:
42
  result = divide(first_number, second_number)
43
+ st.write("Result:", result)