Почему возникает ValueError: tuple.index(x): x not in tuple при переборе перестановок в Python?
исходныe данные условия задачи по ЕГЕ
Схема дорог изображена в виде графа. В таблице содержатся сведения о длине этих дорог в километрах.
У рисовавших схему и таблицу нумерация населённых пунктов никак не связана с буквенными обозначениями на графе.
Известно, что одна дорога в таблице указана неверно: из двух пунктов, которые она соединяет, в таблице расстояние указано только у одного.
В результате в таблице для одного из пунктов одной дороги не хватает, а в другом пункте — одна дорога указана лишней.
Определите длину дороги АД.
вот сам код:
from itertools import *
tab = "2468 1357 257 18 2367 158 235 146".split()
pic = "ад фб дб де бе бв ев еж вж жи ви вг ги".split()
print(*range(1, 8))
for var in permutations ("абвгдежи"):
if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic):
print(var)
вот ошибка:
Traceback (most recent call last):
File "C:\Users\main\PycharmProjects\PythonProject2\ewqweq.py", line 8, in <module>
if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\main\PycharmProjects\PythonProject2\ewqweq.py", line 8, in <genexpr>
if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic):
^^^^^^^^^^^^
ValueError: tuple.index(x): x not in tuple
Ответы (1 шт):
Вы опечатались.
У вас в pic есть пара фб. Смею предположить, что так как узла ф в графе нет, то это опечатка при нажатии на латинскую (вместо кириллической) a в русском регистре. И на самом деле, там должно быть аб.
В результате, так как в переборе (в пермутейшенах) ф отсутствует (см. абвгдежи), то оно и падает в попытке var.index('ф') - ищет ф там где его не может быть, с соответствующим исключением.
Надо фб на аб поменять внутри pic и все заработает.
