Advertisement
timbr0_

c1

Mar 20th, 2023 (edited)
620
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.30 KB | None | 0 0
  1. import csv
  2. from datetime import date, timedelta
  3.  
  4. def read_csv(filename):
  5.     # Define the parallel arrays
  6.     attractionNames = []
  7.     categories = []
  8.     totalVisitors = []
  9.     daysOpen = []
  10.     heightRestrictions = []
  11.  
  12.     # Read the data from the file into the parallel arrays
  13.     with open(filename) as csv_file:
  14.         csvReader = csv.reader(csv_file, delimiter=',')
  15.         next(csvReader)  # skip the header row
  16.  
  17.         for row in csvReader:
  18.             attractionNames.append(row[0])
  19.             categories.append(row[1])
  20.             totalVisitors.append(int(row[2]))
  21.             daysOpen.append(int(row[3]))
  22.             try:
  23.                 heightRestrictions.append(int(row[4]))
  24.             except ValueError:
  25.                 heightRestrictions.append(0)  # handle non-integer height restriction values as 0
  26.  
  27.     return attractionNames, categories, totalVisitors, daysOpen, heightRestrictions
  28.  
  29. def find_least_most_visited(attractionNames, totalVisitors):
  30.     # Calculate the most and least visited attractions
  31.     max_visitors = max(totalVisitors)
  32.     min_visitors = min(totalVisitors)
  33.     most_visited = []
  34.     least_visited = []
  35.     for i in range(len(attractionNames)):
  36.         if totalVisitors[i] == max_visitors:
  37.             most_visited.append(attractionNames[i])
  38.         elif totalVisitors[i] == min_visitors:
  39.             least_visited.append(attractionNames[i])
  40.  
  41.     return most_visited, least_visited
  42.  
  43. def identify_roller_coasters_for_service(attractionNames, categories, daysOpen):
  44.     roller_coasters_for_service = []
  45.  
  46.     for i in range(len(attractionNames)):
  47.         if categories[i] == 'Roller Coaster':
  48.             days_since_service = daysOpen[i] % 90
  49.             days_until_service = 90 - days_since_service
  50.             if days_until_service <= 7:
  51.                 roller_coasters_for_service.append(attractionNames[i])
  52.  
  53.     return roller_coasters_for_service
  54.  
  55. def write_to_csv(filename, data):
  56.     with open(filename, 'w', newline='') as file:
  57.         writer = csv.writer(file)
  58.         writer.writerow(['Attraction Names'])
  59.  
  60.         for item in data:
  61.             writer.writerow([item])
  62. def count_attractions_with_height_restriction_starting_with_1(heightRestrictions):
  63.     count = 0
  64.     for height in heightRestrictions:
  65.         if str(height).startswith('1'):
  66.             count += 1
  67.     print(f'The number of attractions with a height restriction starting with the character 1 is: {count}')
  68.  
  69.  
  70. if __name__ == '__main__':
  71.     attractionNames, categories, totalVisitors, daysOpen, heightRestrictions = read_csv('attractions.csv')
  72.  
  73.     most_visited, least_visited = find_least_most_visited(attractionNames, totalVisitors)
  74.  
  75.     print('The most visited attraction(s) is/are:', ', '.join(most_visited))
  76.     print('The least visited attraction(s) is/are:', ', '.join(least_visited))
  77.  
  78.     roller_coasters_for_service = identify_roller_coasters_for_service(attractionNames, categories, daysOpen)
  79.  
  80.     if roller_coasters_for_service:
  81.         write_to_csv('service.csv', roller_coasters_for_service)
  82.         print('Roller coasters that require service within 7 days have been written to "service.csv"')
  83.     else:
  84.         print('There are no roller coasters that require service within 7 days.')
  85.  
  86.     count_attractions_with_height_restriction_starting_with_1(heightRestrictions)
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement