Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions circle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import math

class Circle:
def __init__(self, radius):
self.radius = radius

def calculate_perimeter(self):
return 2 * math.pi * self.radius

def calculate_area(self):
return math.pi * (self.radius ** 2)
43 changes: 42 additions & 1 deletion flask_app.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from flask import Flask, render_template, request

from helper import perform_calculation, convert_to_float
from circle import Circle

app = Flask(__name__) # create the instance of the flask class

Expand Down Expand Up @@ -38,3 +38,44 @@ def calculate():
return render_template('calculator.html', printed_result="You cannot divide by zero")

return render_template('calculator.html')


@app.route('/calculate_perimeter_area', methods=['GET', 'POST'])
def calc_per_area():
perimeter_result = None
area_result = None

if request.method == 'POST':
radius = request.form['radius']

try:
radius = convert_to_float(radius)
except ValueError:
return render_template('circle.html', printed_result="Please enter a valid number for the radius.")

if radius <= 0:
return render_template('circle.html', printed_result="Radius must be a positive number.")

circle = Circle(radius)
perimeter_result = circle.calculate_perimeter()
area_result = circle.calculate_area()

print("Perimeter Result:", perimeter_result)
print("Area Result:", area_result)

return render_template('circle.html', perimeter_result=perimeter_result, area_result=area_result)

if __name__ == '__main__':
app.run(debug=True)


#@app.route('/circle', methods=['GET', 'POST'])
#def circle_perimeter():
# if request.method == 'POST':
# radius = float(request.form['radius'])
# #circle = Circle(radius)
#perimeter = circle.calculate_perimeter()
# perimeter = calculate_perimeter() # Gayatri was here
# return render_template('circle_perimeter.html', perimeter=perimeter)

# return render_template('circle_perimeter.html')
19 changes: 19 additions & 0 deletions templates/circle.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Circle Perimeter Calculator</title>
</head>
<body>
<h1>Circle Perimeter Calculator</h1>
<form method="POST">
<label for="radius">Enter radius:</label>
<input type="number" id="radius" name="radius" required>
<button type="submit">Calculate Perimeter</button>
</form>
{% if perimeter %}
<p>Perimeter of the circle: {{ perimeter }}</p>
{% endif %}
</body>
</html>
3 changes: 2 additions & 1 deletion templates/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ <h1 class="logo"><a href="{{ url_for('home') }}">Home</a></h1>
<strong><nav>
<ul class="menu">
<li><a href="{{ url_for('calculate') }}">General Calculator</a></li>
<li><a href="{{ url_for('calc_per_area') }}">Circle Perimeter Calculator</a></li>
</ul>
</nav></strong>
</div>
Expand All @@ -21,4 +22,4 @@ <h1 class="logo"><a href="{{ url_for('home') }}">Home</a></h1>
{% endblock %}
</div>
</body>
</html>
</html>
15 changes: 15 additions & 0 deletions test_circle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

from circle import Circle
import math

def test_calculate_perimeter():
# testing calculate_perimeter
circle = Circle(radius=5)
expected_perimeter = 2 * math.pi * 5
assert circle.calculate_perimeter() == round(expected_perimeter, 2)

def test_calculate_area():
# testing calculate_area
circle = Circle(radius=5)
expected_area = math.pi * 5**2
assert circle.calculate_area() == round(expected_area, 2)