TypeError: sequence item 0: expected str instance, list found Python
проблема заключается в строке cube_word =''.join(cubes). Пробовал разные объекты, как и функциональный стиль. Хотя проблема скрывается в моей неопытности Задача: Кубики и слово. На детских кубиках с шести сторон изображены буквы. Дан список слов, образующий словарь. Необходимо подсчитать сколько слов из словаря можно выложить их кубиков. Подсказка: Для каждого размещения кубиков сгенерировать размещения с повторениями. a) используя не все кубики b) используя все кубики
from itertools import product
def count_possible_words(cube_letters, dictionary,
use_all_cubes=False):
possible_words = set()
for word in dictionary:
if use_all_cubes:
cubes_to_use = cube_letters
else:
cubes_to_use = cube_letters[:len(word)]
for cubes in product(*cubes_to_use, repeat=len(word)):
cube_word =''.join(cubes)
if cube_word == word:
possible_words.add(word)
return len(possible_words)
# Пример входных данных cube_letters = [
['A', 'B', 'C'],
['D', 'E', 'F'],
['G', 'H', 'I'],
['J', 'K', 'L'], ]
dictionary = ['DEF', 'AE', 'A', 'KLIF', 'HI']
result_not_all = count_possible_words(cube_letters, dictionary,
use_all_cubes=False)
print("Количество слов из словаря, которые можно выложить из кубиков (используя не все кубики):", result_not_all)
result_all = count_possible_words(cube_letters, dictionary,
use_all_cubes=True)
print("Количество слов из словаря, которые можно выложить из кубиков (используя все кубики):", result_all)
Ответы (1 шт):
В сообщении об ошибке чётко указано:
TypeError: sequence item 0: expected str instance, list found
Ошибка возникает при выполнении оператора:
cube_word =''.join(cubes)
А в документации указана причина такой ошибки:
A TypeError will be raised if there are any non-string values in iterable
Т.е. элементом (sequence item 0) из итератора cubes является не строка, а * list found*. Поставьте отладочную печать перед выполнением цикла этого оператора print(cubes[0]) и Вы увидите, в чём проблема.