Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import math | |
| st.title("🧮 Advanced Calculator") | |
| tab1, tab2, tab3 = st.tabs(["Basic Operations", "Scientific Functions", "Trigonometry"]) | |
| with tab1: | |
| st.header("Basic Operations") | |
| num1 = st.number_input("Enter first number", key="basic_num1") | |
| num2 = st.number_input("Enter second number", key="basic_num2") | |
| operation = st.selectbox("Choose operation", ["Add (+)", "Subtract (-)", "Multiply (*)", "Divide (/)"], key="basic_op") | |
| if st.button("Calculate", key="basic_calc"): | |
| if operation == "Add (+)": | |
| result = num1 + num2 | |
| elif operation == "Subtract (-)": | |
| result = num1 - num2 | |
| elif operation == "Multiply (*)": | |
| result = num1 * num2 | |
| elif operation == "Divide (/)": | |
| if num2 != 0: | |
| result = num1 / num2 | |
| else: | |
| st.error("Cannot divide by zero.") | |
| result = None | |
| if result is not None: | |
| st.success(f"Result: {result}") | |
| with tab2: | |
| st.header("Scientific Functions") | |
| num = st.number_input("Enter a number", key="sci_num") | |
| function = st.selectbox("Choose function", ["Power (x^y)", "Square Root", "Log10", "Natural Log", "Factorial"], key="sci_func") | |
| if function == "Power (x^y)": | |
| exponent = st.number_input("Enter exponent", key="sci_exponent") | |
| if st.button("Calculate", key="sci_calc"): | |
| try: | |
| if function == "Power (x^y)": | |
| result = math.pow(num, exponent) | |
| elif function == "Square Root": | |
| if num < 0: | |
| st.error("Square root of negative number is not supported.") | |
| result = None | |
| else: | |
| result = math.sqrt(num) | |
| elif function == "Log10": | |
| if num <= 0: | |
| st.error("Logarithm undefined for zero or negative numbers.") | |
| result = None | |
| else: | |
| result = math.log10(num) | |
| elif function == "Natural Log": | |
| if num <= 0: | |
| st.error("Natural log undefined for zero or negative numbers.") | |
| result = None | |
| else: | |
| result = math.log(num) | |
| elif function == "Factorial": | |
| if num < 0 or int(num) != num: | |
| st.error("Factorial only defined for non-negative integers.") | |
| result = None | |
| else: | |
| result = math.factorial(int(num)) | |
| if result is not None: | |
| st.success(f"Result: {result}") | |
| except Exception as e: | |
| st.error(f"Error: {e}") | |
| with tab3: | |
| st.header("Trigonometric Functions") | |
| angle = st.number_input("Enter angle in degrees", key="trig_angle") | |
| trig_func = st.selectbox("Choose function", ["sin", "cos", "tan"], key="trig_func") | |
| if st.button("Calculate", key="trig_calc"): | |
| rad = math.radians(angle) | |
| if trig_func == "sin": | |
| result = math.sin(rad) | |
| elif trig_func == "cos": | |
| result = math.cos(rad) | |
| elif trig_func == "tan": | |
| if math.isclose(math.cos(rad), 0, abs_tol=1e-10): | |
| st.error("tan is undefined for this angle.") | |
| result = None | |
| else: | |
| result = math.tan(rad) | |
| if result is not None: | |
| st.success(f"{trig_func}({angle}°) = {result}") | |