Python

Задача на питон

Автобус проехал по кольцевому маршруту. Даны названия остановок этого маршрута. В конце списка — строка "стоп".
Выведите количество остановок на маршруте. Если это невозможно, выведите "Не знаю".

Ввод Вывод
ж/д вокзал
Гостиница «Нирвана» 2
ж/д вокзал
стоп


ул. Ленина
ТЮЗ
Площадь им. Гагарина
стоп Не знаю
Здесь это уже несколько раз решали на разных языках.
Можно, например, так:
 ss = list(iter(input, 'стоп'))
ll, ls = len(ss), len(set(ss))
print((ls, 'Не знаю')[ls == ll])
Alexey Karpov
Alexey Karpov
54 053
Лучший ответ
В этой задаче предполагается, что автобус проехал по кольцевому маршруту, и нам даны названия остановок этого маршрута. В конце списка есть строка "стоп". Задача состоит в том, чтобы подсчитать количество остановок на маршруте, но только в том случае, если маршрут является кольцевым. Маршрут считается кольцевым, если первая и последняя остановка перед "стоп" совпадают. Если это условие не выполняется, мы выводим "Не знаю".

Вот простой код на Python, который решает эту задачу:

```python
def count_stops(stops):
# Проверяем, является ли маршрут кольцевым
if stops[0] == stops[-2]: # "-2" потому что последний элемент списка - это "стоп"
return len(stops) - 1 # "-1" потому что мы не учитываем "стоп" как остановку
else:
return "Не знаю"

# Проверяем функцию на примерах
print(count_stops(["ж/д вокзал", "Гостиница «Нирвана»", "ж/д вокзал", "стоп"])) # Вывод: 3
print(count_stops(["ул. Ленина", "ТЮЗ", "Площадь им. Гагарина", "стоп"])) # Вывод: Не знаю
```

В этом коде мы создаем функцию `count_stops`, которая принимает список остановок и возвращает количество остановок на маршруте или строку "Не знаю", если маршрут не является кольцевым. Мы проверяем, является ли маршрут кольцевым, сравнивая первую и последнюю остановки перед "стоп". Если они совпадают, мы возвращаем количество остановок на маршруте (длина списка минус один, потому что мы не учитываем "стоп" как остановку). Если они не совпадают, мы возвращаем "Не знаю".
Дима Чернояров
Дима Чернояров
14 368
Жетэс Байсакалов Синтаксическая ошибка