Skip to content

Commit 0d15ffc

Browse files
authored
Add Flask-based calculator Closes #12714
1 parent a71618f commit 0d15ffc

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

other/Calculator/Calc.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# calc.py
2+
from flask import Flask, render_template_string, request
3+
4+
app = Flask(__name__)
5+
6+
# HTML template
7+
template = """
8+
<!DOCTYPE html>
9+
<html>
10+
<head>
11+
<title>Flask Calculator</title>
12+
<style>
13+
body { font-family: Arial; background-color: #f5f5f5; text-align: center; padding: 50px; }
14+
input[type=number], select { padding: 10px; margin: 10px; width: 150px; }
15+
input[type=submit] { padding: 10px 20px; margin: 10px; }
16+
h1 { color: #2c3e50; }
17+
.result { margin-top: 20px; font-size: 1.5em; color: #27ae60; }
18+
</style>
19+
</head>
20+
<body>
21+
<h1>Flask Calculator</h1>
22+
<form method="POST">
23+
<input type="number" name="num1" step="any" placeholder="First Number" required>
24+
<input type="number" name="num2" step="any" placeholder="Second Number" required>
25+
<br>
26+
<select name="operation">
27+
<option value="add">Add (+)</option>
28+
<option value="subtract">Subtract (-)</option>
29+
<option value="multiply">Multiply (×)</option>
30+
<option value="divide">Divide (÷)</option>
31+
</select>
32+
<br>
33+
<input type="submit" value="Calculate">
34+
</form>
35+
{% if result is not none %}
36+
<div class="result">Result: {{ result }}</div>
37+
{% endif %}
38+
</body>
39+
</html>
40+
"""
41+
42+
@app.route("/", methods=["GET", "POST"])
43+
def calculator():
44+
result = None
45+
if request.method == "POST":
46+
try:
47+
num1 = float(request.form["num1"])
48+
num2 = float(request.form["num2"])
49+
op = request.form["operation"]
50+
51+
if op == "add":
52+
result = num1 + num2
53+
elif op == "subtract":
54+
result = num1 - num2
55+
elif op == "multiply":
56+
result = num1 * num2
57+
elif op == "divide":
58+
result = num1 / num2 if num2 != 0 else "Error: Division by zero"
59+
except ValueError:
60+
result = "Invalid input"
61+
return render_template_string(template, result=result)
62+
63+
if __name__ == "__main__":
64+
app.run(debug=True)

0 commit comments

Comments
 (0)