[Python] Ajuda! Object Does Not Support Indexing

3 respostas
Ruben_Ribeiro

Pessoal, estou aqui com um problema… Deve de me faltar alguma cosia no código…
Eu fiz uma agenda e queria mostrar as pessoas, eu tenho uma class para as pessoas com setNome e setId…

O problema é que quando eu quero ver a lista aparece: Object Does Not Support Indexing…

Está aqui o código pra ver a lista…

#Aqui vai fazer o for para percorrer os dados do array.

def Lista():

print("\n------- Agenda ------\n")

for pessoa in pessoas:

Dadospessoas(pessoa[0], pessoa[1], pessoa[2], pessoa[3], pessoa[4], pessoa[5])

print("\n---- Fim da Agenda ----\n")

#Aqui vai dar o print

def Dadospessoas(id, nome, numero, idade, altura, peso):
print("[Pessoa %s]\nNome: %s \nNúmero de Telemóvel: %s \nIdade: %s anos\nAltura: %s metros\nPeso: %s kg\n" % (id, nome, numero, idade, altura, peso))

#Código da minha class Pessoa:

class Pessoa:

def __init__(self, id, nome, numero, idade, altura, peso):
	self.id = id
	self.nome = nome
	self.numero = numero
	self.idade = idade
	self.altura = altura
	self.peso = peso
	
def getId(self):
	return self.id
	
def setId(self, id):
	self.id = id
	
def getNome(self):
	return self.nome
	
def setNome(self, nome):
	self.nome = nome

def getNumero(self):
	return self.numero
	
def setNumero(self, numero):
	self.numero = numero

def getIdade(self):
	return self.idade
	
def setIdade(self, idade):
	self.idade = idade
	
def getAltura(self):
	return self.altura
	
def setAltura(self, altura):
	self.altura = altura
	
def getPeso(self):
	return self.peso
	
def setPeso(self, peso):
	self.peso = peso

Obrigado a quem me puder ajudar!

3 Respostas

rodevops

Essa linha:

Dadospessoas(pessoa[0], pessoa[1], pessoa[2], pessoa[3], pessoa[4], pessoa[5])

Mude para…

Dadospessoas(pessoa.getId(), pessoa.getNome()...)

Ou faça orientado a objetos:

Dadospessoas(pessoa)

E na função:

def Dadospessoas(pessoa):
    print("[Pessoa %s]\nNome: %s \nNúmero de Telemóvel: %s \nIdade: %s anos\nAltura: %s metros\nPeso: %s kg\n" % (pessoa.getId(), nome.getNome()...))
Ruben_Ribeiro

Obrigado! Ajudou bastante!

Ruben_Ribeiro

Cara ajudou bastante, mas estou com o mesmo problema mas o processo é diferente… eu tou faznedo uma agenda e coloquei a opção de “Alterar dados” por exemplo eu adicionei uma pesoa mas quero alterar o nome dessa pessoa depois de ter sido adicionada. Então eu fiz uma função pra ele procurar a pessoa e tá funcionando o problema é que na hora de editar o nome ele dá esse erro… Vou mostrar o erro numa print e o código q to usando…

Código editar o nome da pessoa:

def alterarnome(pesquisa):

global pessoa

nome=input("\nInsira o nome -> “)

nome=pessoas[pesquisa][1]

p.setNome(nome)

print(”\nNome alterado.")

menueditar(pesquisa)

Erro que tá dando:

image

Erro: “Type error ‘Pessoa’ object does not support indexing”

Lembrando que a Pessoa e a class

Criado 30 de novembro de 2018
Ultima resposta 5 de dez. de 2018
Respostas 3
Participantes 2