Here’s the thing. There are some errors and practices that are not very good in your code. I’ll try to show you in your own code what I’m talking about. But before that, I’d like to explain something to you about arrays. A python array can be formed from any set of elements of any type (integers, floats, strings, objects, etc.), so if you want to add an object of the Student class to an array, just do array = array + object.
Let’s go to the code so I can show you some things. My comments are preceded by ###.
#coding: utf-8
#== CLASSE ALUNO ==#
#Adicionar quantidade de alunos usando vetor
quantidadeAlunos = input ("Informe a quantidade de alunos participantes: ") ### Não precisa dessa variável para o problema
numAlunos = quantidadeAlunos ### Não precisa dessa variável
nomes = [] ### Não precisa dessa lista (ou array)
cpfs = [] ### Não precisa dessa lista
#Classe aluno
class Aluno():
#Atributos
nome = input ("Insira seu nome: ") ### Fazer um input dentro de uma classe me parece deselegante. Eu não faria isso. Até porque a questão não pede. Depois eu te mostro uma maneira melhor para você conseguir testar se está funcionando.
cpf = input ("Insira seu cpf: ") ### Mesma coisa que o de cima
#Métodos
def __init__(self, nome = nome, cpf = cpf): ### Aqui vc pode colocar def __init__(self, nome, cpf): caso vc tire os inputs de cima
self.nome = nome
self.cpf = cpf[:3] + "." + cpf[3:6] + "." + cpf[6:9] + "-" + cpf[9:]
#def printAluno(self):
# print ("Nome: %s - CPF: %s" % (self.nome, self.cpf))
p = Aluno() ### Aqui, para instanciar um objeto Aluno, vc deverá passar como argumento os atributos nome e cpf, dessa forma: p = Aluno("joãozinho", "16734624789") caso você tire os inputs também.
p.printAluno()
#== CLASSE EQUIPE ==#
class Equipe():
nome = input ("Insira seu nome: ") ### Mesmo argumento da classe anterior
cpf = input ("Insira seu cpf: ") ### Mesmo argumento
def __init__(self, nome = nome, cpf = cpf): ### Aqui é o pulo do gato. Você deve receber uma lista (de alunos) e um projeto, então fica assim: def __init__(self, lista_de_alunos, projeto):
self.nome = nome ### Aqui consequentemente fica: self.lista_de_alunos = lista_de_alunos
self.cpf = cpf ### E a mesma coisa aqui para projeto: self.projeto = projeto
def printAluno(self): ### Isso pode ser uma sobrecarga do operador print. Não é pedido no problema. Você pode fazer para conseguir printar o seu objeto no final, mas não vou entrar nesse detalhe. No código que eu fizer em baixo você vai ver um __str__(self), que é justamente o que esse cara faria.
print ("Nome: %s - CPF: %s" % (self.nome, self.cpf))
### Aqui, para testes podemos criar uma lista de alunos assim: lista = [Aluno("Joao","123"),Aluno("Maria","145")]
### E podemos também criar um projeto assim: projeto = "lavar louça"
p = Aluno() ### Aqui você pode instanciar um objeto da classe Equipe dessa forma: equipe1 = Equipe(lista, projeto)
p.printAluno()
### Daqui para baixo deixo com você. Se você entender realmente o que fiz em cima, pode fazer o de baixo sozinho.
#== CLASSE GERENCIADOR DE EQUIPES ==#
class GerenciadorEquipes():
nome = input ("Insira seu nome: ")
cpf = input ("Insira seu cpf: ")
def __init__(self, nome = nome, cpf = cpf):
self.nome = nome
self.cpf = cpf
def printAluno(self):
print ("Nome: %s - CPF: %s" % (self.nome, self.cpf))
p = Aluno()
p.printAluno()
I’ll put the part of the code I commented rewrite correctly down here.
#coding: utf-8
#== CLASSE ALUNO ==#
class Aluno():
def __init__(self, nome, cpf):
self.nome = nome # Atributo nome (ok)
self.cpf = cpf[:3] + "." + cpf[3:6] + "." + cpf[6:9] + "-" + cpf[9:] # Atributo cpf (ok)
def __str__(self):
return "Nome: " + str(self.nome) + " - CPF: " + str(self.cpf)
# TESTE DA CLASSE ALUNO #
aluno_exemplo = Aluno("Joao","12345678901")
print aluno_exemplo
#== CLASSE EQUIPE ==#
class Equipe():
def __init__(self, lista_de_alunos, projeto):
self.lista_de_alunos = lista_de_alunos # Atributo lista de participantes (ok)
self.projeto = projeto # Atributo projeto (ok)
def __str__(self):
return "Nome: " + str(self.lista_de_alunos) + " - Projeto: " + str(self.projeto)
# TESTE DA CLASSE EQUIPE #
equipe_exemplo = Equipe([aluno_exemplo, Aluno("Maria","12345257901")], "Projeto Abacaxi") # Apenas com dois alunos para facilitar a vida :D
print equipe_exemplo
Poxa! Took away many other doubts of mine. With this I can unroll. You commented on the other two classes, that’s what took away a lot of my doubts. I had just copied and pasted, nor had I tried to implement anything. I haven’t finished this work yet. But it will work out! Thanks for the help.
– Sandson Costa