Здравствуйте! Подскажите пожалуйста.
Такая задача: купить n билетов с местами рядом (покупать билеты с наименьшими номерами мест).
Есть список:
Ticket = namedtuple('Ticket', ['idx', 'row', 'place', 'uuid'])
tickets = [
Ticket(0, 1, 5, uuid.uuid4()),
Ticket(1, 1, 11, uuid.uuid4()),
Ticket(2, 1, 25, uuid.uuid4()),
Ticket(3, 1, 11, uuid.uuid4()),
Ticket(4, 1, 10, uuid.uuid4()),
Ticket(5, 2, 8, uuid.uuid4()),
Ticket(6, 2, 7, uuid.uuid4()),
Ticket(7, 2, 6, uuid.uuid4()),
Ticket(8, 2, 2, uuid.uuid4()),
Ticket(9, 3, 17, uuid.uuid4()),
Ticket(10, 3, 18, uuid.uuid4()),
Ticket(11, 4, 21, uuid.uuid4()),
Ticket(12, 7, 27, uuid.uuid4()),
Ticket(13, 8, 29, uuid.uuid4()),
]
где 5,11,25,11,10,8,7,6,2,17,18,21,27,29 - номера мест,
Я написал вот такую функцию:
def get_certain_number_tickets(route, num):
city = input('city: ')
for item in route:
if city == item.city:
print(item)
route_id = int(input('route: '))
num = input("how many tickets do you need? ")
list1 = []
for ticket in tickets:
length_tickets_place = 13
ticket_emunerate = [(ticket.place + 1, tickets[ticket.place + 1] - ticket.place - 1)]
a3 = list(dropwhile(lambda x: x[1] < length_tickets_place, ticket_emunerate))
for item in range(a3[0][0], a3[0][0] + length_tickets_place):
print(item)
if ticket.idx < num:
list1.append(f'{ticket}')
print(list1)
max_seat = route[route_id][3]
seats = list(range(1, max_seat + 1))
То есть ввожу город(списки городов сделаны таким же списком что и билеты с помощью nametuple), выбираю рейс и пишу сколько билетов мне нужно. Ввожу допустим 2,мне выходит 2 билеты с номером места. Вот мне нужно сделать так чтобы эти места были рядом. Например билет 1 с местов №11, билет 2 с местов №12
Функцию написал. Но работает она только на вывод билетов, а дальше не могу разобраться
именно вот эта часть кода ругается
length_tickets_place = 13
ticket_emunerate = [(ticket.place + 1, tickets[ticket.place + 1] - ticket.place - 1)]
a3 = list(dropwhile(lambda x: x[1] < length_tickets_place, ticket_emunerate))
for item in range(a3[0][0], a3[0][0] + length_tickets_place):
print(item)