Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

O Resultado saiu meio estranho

Olá amigos!

Ao assistir as aulas no final de cada tópico proponho um desafio a mim mesmo, para que eu não fique condicionado somente aos exemplos do professor. Hoje resolvi criar uma função que cadastra livros em uma biblioteca, utilizando listas e tuplas, porém ao executar o for o resultado sai meio estranho e não tenho ideia de como resolver. Segue o código do que fiz:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

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.

Obrigado pela ajuda Giulia, foi perfeito!