51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
from flask import Flask, render_template, request
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
def _calculate(a: float, b: float, op: str) -> float:
|
|
if op == "+":
|
|
return a + b
|
|
if op == "-":
|
|
return a - b
|
|
if op == "*":
|
|
return a * b
|
|
if op == "/":
|
|
if b == 0:
|
|
raise ZeroDivisionError("Division by zero")
|
|
return a / b
|
|
raise ValueError("Unknown operation")
|
|
|
|
|
|
@app.route("/", methods=["GET", "POST"])
|
|
def index():
|
|
result = None
|
|
error = None
|
|
a_val = ""
|
|
b_val = ""
|
|
op = "+"
|
|
|
|
if request.method == "POST":
|
|
a_val = request.form.get("a", "")
|
|
b_val = request.form.get("b", "")
|
|
op = request.form.get("op", "+")
|
|
try:
|
|
a = float(a_val)
|
|
b = float(b_val)
|
|
result = _calculate(a, b, op)
|
|
except Exception as exc: # noqa: BLE001 - show a friendly message
|
|
error = str(exc)
|
|
|
|
return render_template(
|
|
"index.html",
|
|
result=result,
|
|
error=error,
|
|
a_val=a_val,
|
|
b_val=b_val,
|
|
op=op,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=5000, debug=False)
|