Olá, Lucas! O problema está em seu loop interno.
Vamos supor que você tenha a seguinte lista:
biblioteca = [(1,'Livro1', 'Autor1', 'Editora1'), (2,'Livro2', 'Autor2', 'Editora2')]
Quando você usa for livros in biblioteca:
(leia como: para cada item na lista biblioteca), você terá, em cada iteração, um elemento, que é a tupla:
(n,'Livro', 'Autor', 'Editora')
Assim, na primeira iteração, você vai ter:
(1,'Livro1', 'Autor1', 'Editora1')
No loop seguinte, for nome_livros in livros[1]
, você está acessando o valor que ocupa a segunda posição desta tupla (pois as posições começam em 0), ou seja, o valor Livro1
para a primeira iteração.
Então, em for nome_livros in livros[1]
(leia como: para cada item em livros[1], que nessa itereção tem-se: para cada item em Livro1
), a saída será L
, i
, v
, r
, o
, 1
.
Percebe o que na verdade você gostaria de fazer é:
for livros in biblioteca:
print(livros[1])
Ou seja, para cada tupla do tipo (1,'Livro1', 'Autor1', 'Editora1')
, você quer pegar apenas o valor da segunda posição, que corresponde ao nome do livro. Basicamente, você pode remover o seu segundo loop.