import gradio as gr import numpy as np import math def calculate(expression): try: expression = expression.replace("^", "**") allowed_names = { "sin": np.sin, "cos": np.cos, "tan": np.tan, "log": np.log10, "ln": np.log, "sqrt": np.sqrt, "pi": np.pi, "e": np.e, "abs": abs, "factorial": math.factorial, "exp": np.exp } result = eval(expression, {"__builtins__": None}, allowed_names) return str(result) except Exception as e: return "Invalid expression" with gr.Blocks() as demo: gr.Markdown("## 🔬 Scientific Calculator") input_box = gr.Textbox(label="Enter Expression") output_box = gr.Textbox(label="Result") gr.Button("Calculate").click( calculate, inputs=input_box, outputs=output_box ) demo.launch()