def paginate_records(records, page_size, page_number):
"""
Paginates a list of records.
Args:
records (list): The list of records to paginate.
page_size (int): The number of records per page.
page_number (int): The page number to retrieve (1-based).
Returns:
list: A list of records for the requested page, or an empty list if the page number is invalid.
Raises:
TypeError: if records is not a list, or page_size or page_number are not integers
ValueError: if page_size or page_number are not positive
"""
# Input validation
if not isinstance(records, list):
raise TypeError("records must be a list")
if not isinstance(page_size, int):
raise TypeError("page_size must be an integer")
if not isinstance(page_number, int):
raise TypeError("page_number must be an integer")
if page_size <= 0:
raise ValueError("page_size must be a positive integer")
if page_number <= 0:
raise ValueError("page_number must be a positive integer")
# Calculate the start and end indices for the page
start_index = (page_number - 1) * page_size
end_index = start_index + page_size
# Handle cases where the page number is out of range
if start_index >= len(records):
return [] # Return an empty list if the page is beyond the last record
# Slice the list to get the records for the page
return records[start_index:end_index]
Add your comment