python - programa que inscreve pessoas em uma lista - Stack Overflow em Português
alguém consegue explicar o erro?
quantidadePessoas = int(input('quantas pessoas estarão na festa?'))
for pessoa in range(quantidadePessoas):
nome = input('inscreva uma pessoa')
lista[pessoa] = 'olá ' + nome + ', seja bem vindo\n'
editada 3/03 às 5:19
perguntada 3/03 às 4:33
Silas PaixãoSilas Paixão
Uma list (lista) em Python não funciona como se costumam usar os vetores ou "arrays" em C e outras linguagens. Em particular, ela é criada vazia (ou a partir de uma outra sequência) - e você vai acrescentando novos elementos a medida que precisa.
Ou seja: ela não é criada com um tamanho inicial fixo. E isso é o que causa o problema no seu programa. A linha lista[pessoa] = ... está corretíssima para alterar o conteúdo da lista na posição pessoa. O problema é que essa posição ainda não existe - então o seu programa para com um IndexError.
A solução é, invés de tentar alterar o conteúdo da lista na posição pessoa, simplesmente chamar o método das list de Python para incluir um novo elemento ao final da lista. Esse método é o .append(<elemento>).
O seu programa ficaria assim:
lista.append(f'olá {nome}, seja bem vindo\n')
(eu também troquei o uso do "+" para concatenar texto por uma "f string" - que permite o uso de variáveis direto dentro das aspas - isso fica mais simples de digitar e mais legível - mas note a letra f antes das aspas . Isso só funciona do Python 3.6 pra frente)
Um outro jeito - mas não é o normal em Python, seria forçar a criação de um elemento da lista para cada pessoa que você vai incluir, antes do for - isso pode ser feito criando uma lista com um único elemento, e usando o operador de multiplicação * para "somar essa lista com ela mesma" N vezes - e assim ter uma lista com o comprimento necessário. O início do programa ficaria assim (e aí o restante do código que você escreveu funcionaria como está):
lista = [''] * quantidadePessoas
(Aqui fica uma dica importante para suas futuras perguntas: sempre inclua o erro que o Python imprime - chamamos de "traceback" - junto com o seu código com problema. Nesse caso, o programa é curto e é fácil ver o que acontece - mas em geral o traceback descreve exatamente onde está o erro e o quê aconteceu, que é importantíssimo em um program a mais complexo)