Python: How do I change my code to be modular using 2 functions to validate and get all inputs? Also how to use GetValidPositiveInteger in it because I dont know how to replace the old data validation loops. My code; import math def calculate_paint_needed(length, width, height, doors, windows): total_wall_area = 2 * (length + width) * height total_door_area = sum(door["length"] * door["width"] for door in doors) print("Area of doors: ", total_door_area) total_window_area = sum(window["length"] * window["width"] for window in windows) print("Area of windows: ", total_window_area) total_wall_area -= total_door_area + total_window_area gallons_needed = total_wall_area / 100.0 return gallons_needed def get_valid_input(prompt): while True: try: value = float(input(prompt)) return value except ValueError: print("Invalid input. Please enter a valid number.") def main(): length = get_valid_input("Enter the length of the room in feet: ") width = get_valid_input("Enter the width of the room in feet: ") height = get_valid_input("Enter the height of the room in feet: ") total_wall_area = 2 * (length + width) * height print("Total wall area before subtracting doors and windows:", total_wall_area) print("Excellent, let's get your windows and doors in now.") while True: try: num_doors = int(input("Enter the number of doors (must be greater than 0): ")) if num_doors > 0: break else: print("Number of doors must be greater than 0.") except ValueError: print("Invalid input. Please enter a valid integer.") doors = [{"length": get_valid_input(f"Enter the length of door {i+1} in feet: "), "width": get_valid_input(f"Enter the width of door {i+1} in feet: ")} for i in range(num_doors)] num_windows = int(input("Enter the number of windows: ")) windows = [{"length": get_valid_input(f"Enter the length of window {i+1} in feet: "), "width": get_valid_input(f"Enter the width of window {i+1} in feet: ")} for i in range(num_windows)] total_door_area = sum(door["length"] * door["width"] for door in doors) total_window_area = sum(window["length"] * window["width"] for window in windows) total_wall_area -= total_door_area + total_window_area gallons_needed = total_wall_area / 100.0 print(f"You will need to buy {math.ceil(gallons_needed)} gallons of paint.") print("You will need exactly", gallons_needed, "gallons of paint for the walls after subtracting the doors and windows.") if __name__ == "__main__": main()
Python: How do I change my code to be modular using 2 functions to validate and get all inputs?
Also how to use GetValidPositiveInteger in it because I dont know how to replace the old data validation loops.
My code;
import math
def calculate_paint_needed(length, width, height, doors, windows):
total_wall_area = 2 * (length + width) * height
total_door_area = sum(door["length"] * door["width"] for door in doors)
print("Area of doors: ", total_door_area)
total_window_area = sum(window["length"] * window["width"] for window in windows)
print("Area of windows: ", total_window_area)
total_wall_area -= total_door_area + total_window_area
gallons_needed = total_wall_area / 100.0
return gallons_needed
def get_valid_input(prompt):
while True:
try:
value = float(input(prompt))
return value
except ValueError:
print("Invalid input. Please enter a valid number.")
def main():
length = get_valid_input("Enter the length of the room in feet: ")
width = get_valid_input("Enter the width of the room in feet: ")
height = get_valid_input("Enter the height of the room in feet: ")
total_wall_area = 2 * (length + width) * height
print("Total wall area before subtracting doors and windows:", total_wall_area)
print("Excellent, let's get your windows and doors in now.")
while True:
try:
num_doors = int(input("Enter the number of doors (must be greater than 0): "))
if num_doors > 0:
break
else:
print("Number of doors must be greater than 0.")
except ValueError:
print("Invalid input. Please enter a valid integer.")
doors = [{"length": get_valid_input(f"Enter the length of door {i+1} in feet: "),
"width": get_valid_input(f"Enter the width of door {i+1} in feet: ")}
for i in range(num_doors)]
num_windows = int(input("Enter the number of windows: "))
windows = [{"length": get_valid_input(f"Enter the length of window {i+1} in feet: "),
"width": get_valid_input(f"Enter the width of window {i+1} in feet: ")}
for i in range(num_windows)]
total_door_area = sum(door["length"] * door["width"] for door in doors)
total_window_area = sum(window["length"] * window["width"] for window in windows)
total_wall_area -= total_door_area + total_window_area
gallons_needed = total_wall_area / 100.0
print(f"You will need to buy {math.ceil(gallons_needed)} gallons of paint.")
print("You will need exactly", gallons_needed, "gallons of paint for the walls after subtracting the doors and windows.")
if __name__ == "__main__":
main()
Step by step
Solved in 2 steps with 1 images