Почему возникает 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 шт):

Автор решения: Alexey Trukhanov

Вы опечатались.

У вас в pic есть пара фб. Смею предположить, что так как узла ф в графе нет, то это опечатка при нажатии на латинскую (вместо кириллической) a в русском регистре. И на самом деле, там должно быть аб.

В результате, так как в переборе (в пермутейшенах) ф отсутствует (см. абвгдежи), то оно и падает в попытке var.index('ф') - ищет ф там где его не может быть, с соответствующим исключением.

Надо фб на аб поменять внутри pic и все заработает.

→ Ссылка