sgg Posted May 26, 2012 at 11:53 AM Report #458205 Posted May 26, 2012 at 11:53 AM Bom dia. Tenho um trabalho para entregar sobre tipos abstractos de dados em que o objectivo geral é fazer uma rede social. Nos meus conhecimentos pouco vastos de python, consegui fazer as primeiras class até que me deparei com um problema. É pedido uma ordenação de uma lista de utilizadores da rede social pelo email, definidos pela class User que defini anteriormente. O método pedido é o mergesort, para o qual tenho um esboço, mas não consigo ordenar pelo email. Pois não faço ideia se esta função mergesort deve-se incluir na class User ou funcionar como uma função independente. Deixo o que tenho para já. Obrigada! class User: def __init__(self, email, passwd): self.email = email self.passwd = self.__makePasswd(passwd) self.name = None self.birth = None self.city = None self.active = True self.friendRequests = Queue() self.friends = [] def __str__(self): status = {True:"ativa", False:"inativa"} data = [self.email, status[self.active]] if self.name is not None: data.insert(0, self.name) return ":".join(data) def __makePasswd(self, passwd): rot = 3 return "".join(map(chr, map(lambda x: (x-97+rot)%25+97, [ord(c) for c in passwd]))) def askFriend(self,u): self.friends.append(u) def recvRequest(self,u): self.friendRequests.append(u) def showPending(self): for i in self.friendRequests: print i print def showFriends(self): for i in self.friends: print i print def confirmFriends(self): while self.friendRequests.peek() is not None: i=self.friendRequests.pop() self.friends.append(i) def mergesort (x): if len(x)>1: i2=len(x)/2 x1=x[i2:] x2=x[:i2] mergesort(x1) mergesort(x2) i=0 j=0 k=0 L=[] while i<len(x1) and j<len(x2): if x1[i]<x2[j]: L[k]= x1[i] i+=1 elif x1[i]>x2[j]: L[k]=x2[j] j+=1 else: L[k]=2[j] j+=1 k+=1 while i<len(x1): L[k]=x1[i] i+=1 k+=1 while j<len(x2): L[k]=x2[j] j+=1 k+=1
bsccara Posted May 26, 2012 at 12:47 PM Report #458207 Posted May 26, 2012 at 12:47 PM Pois não faço ideia se esta função mergesort deve-se incluir na class User ou funcionar como uma função independente. Eu não faria nem uma nem outra coisa. Se a classe User encapsula os dados de um utilizador não há nada para ordenar. Se estás a criar o programa encapsulando os dados em objectos não faz sentido usar uma função isolada. Terás de implementar um objecto para conter todas as instâncias da classe User; é nessa classe que deves implementar a ordenação.
brunoais Posted May 26, 2012 at 01:46 PM Report #458211 Posted May 26, 2012 at 01:46 PM O teu código não funciona. Não tem tabulações (com espaços ou com tabs) visíveis. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
sgg Posted May 26, 2012 at 02:11 PM Author Report #458214 Posted May 26, 2012 at 02:11 PM Isso faz sentido, foi a primeira coisa em que pensei, mas é suposto apenas implementar a função mergesort, por isso é que fiquei na dúvida e não sei como resolver. A questão das tabulações foi por causa do copy paste.
djthyrax Posted May 26, 2012 at 07:18 PM Report #458252 Posted May 26, 2012 at 07:18 PM Não tinha espaços porque não usaste a tag [ code=python ]. Já está resolvido isso. 🙂 Se não tens nada para aglomerar os utilizadores, limita-te a implementar o mergesort numa função separada a ordenar os utilizadores. Mas nada melhor do que falar com o teu professor e perguntar. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now