primeiro commit com exercicios de Exercism realizados até esta data
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
"""Functions to automate Conda airlines ticketing system."""
|
||||
|
||||
|
||||
def generate_seat_letters(number):
|
||||
"""Generate a series of letters for airline seats.
|
||||
|
||||
:param number: int - total number of seat letters to be generated.
|
||||
:return: generator - generator that yields seat letters.
|
||||
|
||||
Seat letters are generated from A to D.
|
||||
After D it should start again with A.
|
||||
|
||||
Example: A, B, C, D
|
||||
|
||||
"""
|
||||
seat_letters: list = ["A", "B", "C", "D"]
|
||||
for seat_number in range(number):
|
||||
yield seat_letters[seat_number % len(seat_letters)]
|
||||
|
||||
|
||||
def generate_seats(number):
|
||||
"""Generate a series of identifiers for airline seats.
|
||||
|
||||
:param number: int - total number of seats to be generated.
|
||||
:return: generator - generator that yields seat numbers.
|
||||
|
||||
A seat number consists of the row number and the seat letter.
|
||||
|
||||
There is no row 13.
|
||||
Each row has 4 seats.
|
||||
|
||||
Seats should be sorted from low to high.
|
||||
|
||||
Example: 3C, 3D, 4A, 4B
|
||||
|
||||
"""
|
||||
seat_letters = generate_seat_letters(number)
|
||||
row_number = 1
|
||||
for seat_number in range(number):
|
||||
if not seat_number % 4 and seat_number > 0:
|
||||
row_number += 1
|
||||
if row_number == 13:
|
||||
row_number += 1
|
||||
yield f"{row_number}{next(seat_letters)}"
|
||||
|
||||
|
||||
def assign_seats(passengers):
|
||||
"""Assign seats to passengers.
|
||||
|
||||
:param passengers: list[str] - a list of strings containing names of passengers.
|
||||
:return: dict - with the names of the passengers as keys and seat numbers as values.
|
||||
|
||||
Example output: {"Adele": "1A", "Björk": "1B"}
|
||||
|
||||
"""
|
||||
seats = generate_seats(len(passengers))
|
||||
assign_seats_dict: dict = {}
|
||||
for passenger in passengers:
|
||||
assign_seats_dict[passenger] = next(seats)
|
||||
return assign_seats_dict
|
||||
|
||||
|
||||
def generate_codes(seat_numbers, flight_id):
|
||||
"""Generate codes for a ticket.
|
||||
|
||||
:param seat_numbers: list[str] - list of seat numbers.
|
||||
:param flight_id: str - string containing the flight identifier.
|
||||
:return: generator - generator that yields 12 character long ticket codes.
|
||||
|
||||
"""
|
||||
for seat in seat_numbers:
|
||||
yield f"{seat}{flight_id}".ljust(12, "0")
|
||||
Reference in New Issue
Block a user