Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- from datetime import date, timedelta
- def read_csv(filename):
- # Define the parallel arrays
- attractionNames = []
- categories = []
- totalVisitors = []
- daysOpen = []
- heightRestrictions = []
- # Read the data from the file into the parallel arrays
- with open(filename) as csv_file:
- csvReader = csv.reader(csv_file, delimiter=',')
- next(csvReader) # skip the header row
- for row in csvReader:
- attractionNames.append(row[0])
- categories.append(row[1])
- totalVisitors.append(int(row[2]))
- daysOpen.append(int(row[3]))
- try:
- heightRestrictions.append(int(row[4]))
- except ValueError:
- heightRestrictions.append(0) # handle non-integer height restriction values as 0
- return attractionNames, categories, totalVisitors, daysOpen, heightRestrictions
- def find_least_most_visited(attractionNames, totalVisitors):
- # Calculate the most and least visited attractions
- max_visitors = max(totalVisitors)
- min_visitors = min(totalVisitors)
- most_visited = []
- least_visited = []
- for i in range(len(attractionNames)):
- if totalVisitors[i] == max_visitors:
- most_visited.append(attractionNames[i])
- elif totalVisitors[i] == min_visitors:
- least_visited.append(attractionNames[i])
- return most_visited, least_visited
- def identify_roller_coasters_for_service(attractionNames, categories, daysOpen):
- roller_coasters_for_service = []
- for i in range(len(attractionNames)):
- if categories[i] == 'Roller Coaster':
- days_since_service = daysOpen[i] % 90
- days_until_service = 90 - days_since_service
- if days_until_service <= 7:
- roller_coasters_for_service.append(attractionNames[i])
- return roller_coasters_for_service
- def write_to_csv(filename, data):
- with open(filename, 'w', newline='') as file:
- writer = csv.writer(file)
- writer.writerow(['Attraction Names'])
- for item in data:
- writer.writerow([item])
- def count_attractions_with_height_restriction_starting_with_1(heightRestrictions):
- count = 0
- for height in heightRestrictions:
- if str(height).startswith('1'):
- count += 1
- print(f'The number of attractions with a height restriction starting with the character 1 is: {count}')
- if __name__ == '__main__':
- attractionNames, categories, totalVisitors, daysOpen, heightRestrictions = read_csv('attractions.csv')
- most_visited, least_visited = find_least_most_visited(attractionNames, totalVisitors)
- print('The most visited attraction(s) is/are:', ', '.join(most_visited))
- print('The least visited attraction(s) is/are:', ', '.join(least_visited))
- roller_coasters_for_service = identify_roller_coasters_for_service(attractionNames, categories, daysOpen)
- if roller_coasters_for_service:
- write_to_csv('service.csv', roller_coasters_for_service)
- print('Roller coasters that require service within 7 days have been written to "service.csv"')
- else:
- print('There are no roller coasters that require service within 7 days.')
- count_attractions_with_height_restriction_starting_with_1(heightRestrictions)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement