Схема мест в самолёте на Python

Содержание
Введение
Простейший пример
Далее по теме

Введение

В проекте airtravel печатается схема мест в салоне самолёта.

Пример метода seating_plan() из класса Aircraft

class Aircraft: def __init__(self, registration, model, num_rows, num_seats_per_row): self._registration = registration self._model = model self._num_rows = num_rows self._num_seats_per_row = num_seats_per_row def registration(self): return self._registration def model(self): return self._model # Letter I is not in use to avoid # collisions with number 1 def seating_plan(self): return (range(1, self._num_rows + 1), "ABCDEFGHJK"[:self._num_seats_per_row])

Простейший пример

Как печатается схема мест в самолёте:

seats = "ABCDEF" rows = range(1, 10) for r in rows: s = '' for seat in seats: s = s + seat print(r, s)

1 ABCDEF 2 ABCDEF 3 ABCDEF 4 ABCDEF 5 ABCDEF 6 ABCDEF 7 ABCDEF 8 ABCDEF 9 ABCDEF

Пример с параметрами

Немного усложним: теперь число рядов и количество мест в ряду будут задаваться параметрами.

Максимальной шириной будем считать десять мест, то есть буквы

ABCDEFGHJK

Буква I не используется так как похожа на единицу. Из этих десяти будем вырезать нужное количество.

num_rows = 9 num_seats_per_row = 6 seats = "ABCDEFGHJK"[:num_seats_per_row] rows = range(1, num_rows + 1) for r in rows: s = '' for seat in seats: s = s + seat print(r, s)

1 ABCDEF 2 ABCDEF 3 ABCDEF 4 ABCDEF 5 ABCDEF 6 ABCDEF 7 ABCDEF 8 ABCDEF 9 ABCDEF

Теперь сохраним план в виде кортежа

num_rows = 9 num_seats_per_row = 6 seating_plan = (range(1, num_rows + 1), "ABCDEFGHJK"[:num_seats_per_row]) rows, seats = seating_plan for r in rows: s = '' for seat in seats: s = s + seat print(r, s)

1 ABCDEF 2 ABCDEF 3 ABCDEF 4 ABCDEF 5 ABCDEF 6 ABCDEF 7 ABCDEF 8 ABCDEF 9 ABCDEF

Получился кортеж seating_plan в котором seating_plan[0] записали в rows а seating_plan[1] в seats

Создадим пустой список empty_airplane_plan с помощью генератора списков

from pprint import pp num_rows = 9 num_seats_per_row = 6 seating_plan = (range(1, num_rows + 1), "ABCDEFGHJK"[:num_seats_per_row]) rows, seats = seating_plan empty_airplane_plan = [[None for letter in seats] for _ in rows] pp(empty_airplane_plan)

[[None, None, None, None, None, None], [None, None, None, None, None, None], [None, None, None, None, None, None], [None, None, None, None, None, None], [None, None, None, None, None, None], [None, None, None, None, None, None], [None, None, None, None, None, None], [None, None, None, None, None, None], [None, None, None, None, None, None]]

Теперь вместо None будем делать словарь вида A: None, B: None и т.д.

from pprint import pp num_rows = 9 num_seats_per_row = 6 seating_plan = (range(1, num_rows + 1), "ABCDEFGHJK"[:num_seats_per_row]) rows, seats = seating_plan empty_airplane_plan = [None] + [{letter: None for letter in seats} for _ in rows] pp(empty_airplane_plan)

[None, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}, {'A': None, 'B': None, 'C': None, 'D': None, 'E': None, 'F': None}]

Article author: Andrei Olegovich

Похожие статьи
ООП в Python
Классы
Методы
class variables
class methods
Статические методы
Наследование
Специальные методы
dataclass
__slots__
Декоратор property
super()

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: