Olá Matheus, tudo bem?
Quando você utiliza estudantes[i], você está acessando o nome completo do estudante na posição i da lista. Por exemplo, se o nome for "João Silva", estudantes[i] retornará "João Silva".
Por outro lado, quando você usa estudantes[i][0], você está acessando o primeiro caractere (ou letra) do nome do estudante. O índice [0] indica que você quer o primeiro elemento da string, que é a inicial do nome. Portanto, se o nome for "João Silva", estudantes[i][0] retornará "J".Se você adicionou sobrenomes e o seu código está retornando os nomes completos, isso pode ser porque você não está utilizando o índice [0] corretamente.
Para que a tupla contenha apenas a inicial do nome, você deve garantir que está acessando a letra inicial da string do nome:
estudantes = ["João Silva", "Maria Oliveira", "José Santos", "Cláudia Lima", "Ana Costa"]
codigo_estudantes = []
for i in range(len(estudantes)):
codigo_estudantes.append((estudantes[i], estudantes[i][0] + gera_codigo()))
print(codigo_estudantes)
Nesse caso, mesmo que os nomes sejam compostos, a inicial ainda será a primeira letra do primeiro nome.
Se você quiser que a tupla contenha o nome completo, você deve usar apenas estudantes[i] na tupla.
Espero ter ajudado.
Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!