Advertisement
gruntfutuk

Cark Park Occupancy

Jul 7th, 2020
1,564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.44 KB | None | 0 0
  1. def validate_parking(parking):
  2.     parking = parking.strip()
  3.     try:
  4.         if parking.startswith('[') and parking.endswith(']'):
  5.             parking = parking[1:-1]
  6.         parking = [int(slot) for slot in parking.split(',')]
  7.         if parking and all(slot in [0, 1] for slot in parking):
  8.             return parking
  9.     except ValueError:
  10.         return None
  11.        
  12. def calculate_occupancy(parking):
  13.     slots = len(parking)
  14.     spaces = parking.count(0)
  15.     filled = slots - spaces
  16.     occupied_percentage = int(round(filled / slots * 100))
  17.     return slots, filled, spaces, occupied_percentage
  18.  
  19. def report(car_parks):
  20.     print('Car park occupancy levels\n')
  21.     print("Park| Slots| Occpd| Vacant| % occupied ")
  22.     print("----|------|------|-------|-------------")
  23.     for park, car_park in enumerate(car_parks, start=1):
  24.         parking = validate_parking(car_park)
  25.         if parking:
  26.             slots, filled, spaces, occupied_percentage = calculate_occupancy(parking)
  27.             print(f'{park:3} | {slots:4} | {filled:4} | {spaces:4}  | '
  28.                   f'{occupied_percentage:3}%')
  29.         else:
  30.             print(f'{park:3} | invalid data: {car_park.strip()}')
  31.  
  32. def car_parks_occupancy(filename):
  33.     try:
  34.         car_parks = open(filename).readlines()
  35.     except IOError:
  36.         print(f'Unable to open data file{filename}')
  37.     else:
  38.         report(car_parks)
  39.                    
  40. car_parks_occupancy('car_parks.csv')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement