Calculate the number of balls needed to fill a ball pit.
Watch this video to learn about the new concepts shown in the program:
Just like in maths you can use brackets to change the default order of operations. Known as BIDMAS or BODMAS: Brackets, Indices, Division, Multiplication, Addition, Subtraction.
You can also structure your program into more than one subprogram.
Questions to think about with this program to check your understanding:
Explain why both int and float are used in programming. Why don’t we always use float for storing numbers?
Floats and integers are stored in different ways by the computer. Floats usually use more memory than integers. Good programmers write programs that only use the memory they need.
Why have comments been added to the end of lines 21 for the units instead of storing ball_pit_radius as “1m” and the ball_pit_height as “0.2m” as you might in Maths or Science?
Comments allow the programmer to remember the units of measurement. The processor can’t perform arithmetic on strings, only integer and float data types. Including the unit with the number would mean it is a string because letters are strings.
Change the program below so that it:
Enter the radius of the ball pit in meters: 2
Enter the height of the ball pit in meters: 0.5
Enter the radius of one ball in meters: 0.05
You need 9000 balls to fill the ball pit.
# Ball pit program
# -------------------------
# Subprograms
# -------------------------
# Function to return the volume of the ball pit
def ball_pit_volume(ball_pit_radius, ball_pit_height):
---
pi = 3.14
---
return pi * (ball_pit_radius * ball_pit_radius) * ball_pit_height
---
# Function to return the volume of a ball
def ball_volume(ball_radius):
---
pi = 3.14
---
return (4 / 3) * pi * (ball_radius * ball_radius * ball_radius)
---
# -------------------------
# Main program
# -------------------------
---
ball_pit_radius = float(input("Enter the radius of the ball pit in meters: "))
ball_pit_height = float(input("Enter the height of the ball pit in meters: "))
ball_radius = float(input("Enter the radius of one ball in meters: "))
---
packing_density = 0.75 # Volume taken up by the balls
---
balls = int((ball_pit_volume(ball_pit_radius, ball_pit_height) / ball_volume(ball_radius)) * packing_density)
---
balls = balls + 1
---
print("You need", balls, "balls to fill the ball pit.")