Jump to content

Recommended Posts

Posted

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
Posted

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.

Posted

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%.

Posted

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.

Posted

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!

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.