Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Занято Python. Подстроить под PEP8

Егор Пискунов Знаток (338), закрыт 2 месяца назад
Условия задачи: Во внешней переменной places находится список списков – схема зала, в которой единицами обозначены проданные места, а нулями свободные.
Еще несколько заявок на приобретение билетов уже получены, но еще не выполнены. Гарантируется, что заявки только на свободные места.
Напишите функцию sequence_occupied(), которая находит наибольшую последовательность заполненных мест в ряду.
Функция получает произвольное количество именованных аргументов: ключ – ряд, значение – список мест. Возвращает длину наибольшей последовательности единиц и номер ряда, в которой эта последовательность находится. Если таких несколько, то ближе к началу списка. Нумерация рядов и мест в ряду с 1.
В задаче нельзя использовать инструкцию global.

def sequence_occupied(places, **data):
max_sequence_length = 0
max_sequence_row = 0

for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
sequence_length = 0
while seat_index + sequence_length < len(places[row_index]) and places[row_index][seat_index + sequence_length] == 0:
sequence_length += 1
if sequence_length > max_sequence_length:
max_sequence_length = sequence_length
max_sequence_row = row_index + 1

for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
for i in range(max_sequence_length):
places[row_index][seat_index + i] = 1

return max_sequence_length, max_sequence_row
Дополнен 2 месяца назад
# Пример использования:
places = [[1, 1, 0, 0], [0, 0, 0, 1], [0, 1, 1, 0, 0, 0]]
data = {'2': [3, 2], '1': [4], '3': [4]}
print(sequence_occupied(places, **data))
print(places)
Вывод: (3, 2)
[[1, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 1, 0, 0]]
Лучший ответ
Остальные ответы
Mercio Mcbavin Профи (832) 2 месяца назад
def sequence_occupied(places, **data):
max_sequence_length = 0
max_sequence_row = 0

for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
sequence_length = 0
while (seat_index + sequence_length < len(places[row_index]) and
places[row_index][seat_index + sequence_length] == 0):
sequence_length += 1
if sequence_length > max_sequence_length:
max_sequence_length = sequence_length
max_sequence_row = row_index + 1

for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
for i in range(max_sequence_length):
places[row_index][seat_index + i] = 1

return max_sequence_length, max_sequence_row
Вот вариант кода, подстроенный под PEP8:
```python
def sequence_occupied(places, **data):
max_sequence_length = 0
max_sequence_row = 0

for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
sequence_length = 0
while (seat_index + sequence_length < len(places[row_index]) and
places[row_index][seat_index + sequence_length] == 0):
sequence_length += 1
if sequence_length > max_sequence_length:
max_sequence_length = sequence_length
max_sequence_row = row_index + 1

for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
for i in range(max_sequence_length):
places[row_index][seat_index + i] = 1

return max_sequence_length, max_sequence_row
```
Изменения:

* Используется 4 пробела для отступов.
* В конце строк нет пробелов.
* Перед открывающей скобкой в условии `while` нет пробела.
* Между операторами `and` и `==` добавлены пробелы.
* Между аргументами функции `range()` добавлен пробел.
* После запятых добавлены пробелы.
* После двоеточий добавлены пробелы.
* Перед закрывающей скобкой в конце строки с условием `while` добавлен отступ.
* Между строками кода добавлены пустые строки для лучшей читаемости.
* Комментарии удалены, т.к. они не соответствуют PEP8.
Похожие вопросы