Ir ao conteúdo
  • Cadastre-se

Python Desenvolver exercício de listas no python


Ir à solução Resolvido por Midori,

Posts recomendados

@Felipe2719 Sua função deve ter dois loops (um dentro do outro) para comparar os pares ordenados das posições. Supondo que A e B sejam as listas e a e b os índices das posições, seu If com o teste da colisão (no loop mais interno) vai ficar assim,

 

if A[a] == B[b] and A[a + 1] == B[b + 1]:

 

Se for verdadeiro é porque houve uma colisão.

 

E como você vai pegar dois valores por ciclo das listas, seu contador deve ser de dois em dois, a += 2 e b += 2

 

  • Obrigado 1
Link para o post
Compartilhar em outros sites

@Felipe2719 O While é igual você já fez nos outros exercícios, mas agora terá que colocar um dentro do outro para comparar os elementos das listas. Para facilitar comece com apenas um While, como já fez antes, para só mostrar os elementos de uma lista e depois coloque outro dentro para pegar a outra lista. O próximo passo é fazer a comparação como comentei no post acima.

Link para o post
Compartilhar em outros sites

@Felipe2719 Sim. Declare uma variável com o valor 0 (colidiu = 0) e no If atribua 1 se houver colisão (colidiu = 1), aí é só acrescentar o valor dela na lista. Sempre atribua 0 antes de entrar no loop interno.

Link para o post
Compartilhar em outros sites
def questao(A,B):
  a = 0
  b = 0
  C = []
  pos = 0
  colidiu = 0
  
  while pos<len(A):
    ...
    
    while pos<len(B):
      ...
      if A[a]==B[b] and A[a+1] == B[b+1]:
        a = a + 2
        b = b + 2
        colidiu = 1
        C.append(colidiu)
     pos = pos + 1
  return C

print(questao([0,6,3,5],[10,2,0,6,3,4,9,5]))
        
      
      
      
      
      
  

To fazendo assim, tem algo errado ? :x

e pra eu fazer os jogadores que não colidiram, eu tenho que botar um elif ou else ?

Link para o post
Compartilhar em outros sites
  • Solução

@Felipe2719 As variáveis a e b devem ficar no lugar de pos, o código com as correções,

 

def questao(A,B):
    a = 0
    C = []
  
    while a < len(A):
        colidiu = 0
        b = 0
        while b < len(B):
            if A[a]==B[b] and A[a+1] == B[b+1]:
                colidiu = 1
            b = b + 2
        C.append(colidiu)
        a = a + 2
    return C

 

Outra coisa que poderia ser feita é colocar o comando break para sair do segundo loop quando tiver colisão, já que não tem necessidade de ir até o último elemento quando isso acontece.

  • Obrigado 1
Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!