Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import math | |
| # Title of the application | |
| st.title('Advanced Calculator') | |
| # Sidebar for choosing operation | |
| operation = st.sidebar.selectbox( | |
| "Choose operation", | |
| ("Basic", "Advanced", "Trigonometric", "Logarithmic", "Factorial", "Percentage", "Memory") | |
| ) | |
| # User input for numbers | |
| num1 = st.number_input('Enter first number', value=0.0) | |
| num2 = st.number_input('Enter second number (optional)', value=0.0) | |
| # Memory variable (to store previous result) | |
| if 'memory' not in st.session_state: | |
| st.session_state.memory = 0.0 | |
| # Basic Operations | |
| if operation == "Basic": | |
| basic_op = st.selectbox("Choose basic operation", ("Add", "Subtract", "Multiply", "Divide")) | |
| if basic_op == "Add": | |
| result = num1 + num2 | |
| elif basic_op == "Subtract": | |
| result = num1 - num2 | |
| elif basic_op == "Multiply": | |
| result = num1 * num2 | |
| elif basic_op == "Divide": | |
| if num2 != 0: | |
| result = num1 / num2 | |
| else: | |
| result = "Error: Division by Zero" | |
| # Advanced Operations | |
| elif operation == "Advanced": | |
| advanced_op = st.selectbox("Choose advanced operation", ("Power", "Square Root")) | |
| if advanced_op == "Power": | |
| result = num1 ** num2 | |
| elif advanced_op == "Square Root": | |
| if num1 >= 0: | |
| result = math.sqrt(num1) | |
| else: | |
| result = "Error: Cannot take square root of negative number" | |
| # Trigonometric Operations | |
| elif operation == "Trigonometric": | |
| trig_op = st.selectbox("Choose trigonometric function", ("Sine", "Cosine", "Tangent")) | |
| angle_in_degrees = st.checkbox("Use degrees instead of radians?") | |
| if trig_op == "Sine": | |
| if angle_in_degrees: | |
| result = math.sin(math.radians(num1)) | |
| else: | |
| result = math.sin(num1) | |
| elif trig_op == "Cosine": | |
| if angle_in_degrees: | |
| result = math.cos(math.radians(num1)) | |
| else: | |
| result = math.cos(num1) | |
| elif trig_op == "Tangent": | |
| if angle_in_degrees: | |
| result = math.tan(math.radians(num1)) | |
| else: | |
| result = math.tan(num1) | |
| # Logarithmic Operations | |
| elif operation == "Logarithmic": | |
| log_op = st.selectbox("Choose logarithmic operation", ("Log Base 10", "Natural Log")) | |
| if log_op == "Log Base 10": | |
| if num1 > 0: | |
| result = math.log10(num1) | |
| else: | |
| result = "Error: Logarithm only defined for positive numbers" | |
| elif log_op == "Natural Log": | |
| if num1 > 0: | |
| result = math.log(num1) | |
| else: | |
| result = "Error: Logarithm only defined for positive numbers" | |
| # Factorial | |
| elif operation == "Factorial": | |
| if num1 >= 0 and num1 == int(num1): | |
| result = math.factorial(int(num1)) | |
| else: | |
| result = "Error: Factorial is only defined for non-negative integers" | |
| # Percentage Calculation | |
| elif operation == "Percentage": | |
| percentage_op = st.selectbox("Choose percentage operation", ("Find Percentage", "Find Percentage of")) | |
| if percentage_op == "Find Percentage": | |
| result = (num1 * num2) / 100 | |
| elif percentage_op == "Find Percentage of": | |
| result = (num1 * 100) / num2 | |
| # Memory Feature | |
| elif operation == "Memory": | |
| memory_op = st.selectbox("Choose memory operation", ("Store Result", "Recall Result", "Clear Memory")) | |
| if memory_op == "Store Result": | |
| st.session_state.memory = result | |
| result = f"Result stored in memory: {st.session_state.memory}" | |
| elif memory_op == "Recall Result": | |
| result = f"Memory contains: {st.session_state.memory}" | |
| elif memory_op == "Clear Memory": | |
| st.session_state.memory = 0.0 | |
| result = "Memory cleared" | |
| # Display the result | |
| st.write(f"Result: {result}") | |