Ir ao conteúdo

Posts recomendados

Postado

questao6.png.dba6a9d6cba2113306091b398ac84176.png

 

Na minha cabeça esse código que eu fiz faz sentido, mas como eu sei que tá bem errado deixo p alguém corrigir se possível.

@Midorime salva de novo  kkkk é a última agora

*Tá retornando a True quando era pra retornar False

def questao(capmax,seq):
  i = 0
  j = 0
  while i<len(seq):
    soma = 0
    if seq[i+1]-seq[j+1]<=capmax:
      soma = soma + seq[i]
      i = i + 2
      else:
        soma = soma - seq[i]
        j = j + 1
        
  return (soma<=capmax)

print(questao(10,[0,5,2,7,3,3,5,2,7,0]))
        
  

 

Postado

@Felipe2719    creio que mesmo no python não se pode usar essa syntaxe no return , e seu código poderia ser assim  :

def questao(capmax, seq):
    i = 0
    j = 0
    while i < len(seq):
        soma = 0
        if seq[i + 1] - seq[j + 1] <= capmax:
            soma = soma + seq[i]
            i = i + 2
        else:
            soma = soma - seq[i]
            j = j + 1


    if soma <= capmax :
        return soma
    else:
        return capmax

print(questao(10, [0, 5, 2, 7, 3, 3, 5, 2, 7, 0]))

 

Postado

@Felipe2719     realmente você tem razão , agora que observei que o erro é de identação mesmo , o return está no início da linha , quando deveria estar na coluna na mesma posição do while , por que o return é da função , e seria assim  :

def questao(capmax, seq):
    i = 0
    j = 0
    while i < len(seq):
        soma = 0
        if seq[i + 1] - seq[j + 1] <= capmax:
            soma = soma + seq[i]
            i = i + 2
            else:
            soma = soma - seq[i]
            j = j + 1
    return (soma <= capmax)

print(questao(10, [0, 5, 2, 7, 3, 3, 5, 2, 7, 0]))

 

 

Postado
12 horas atrás, Felipe2719 disse:

Na minha cabeça esse código que eu fiz faz sentido, mas como eu sei que tá bem errado deixo p alguém corrigir se possível.

Com essa lista e capacidade está retornando corretamente True, mas se testar com lista [0,5,2,10,3,3,5,2,7,0] também vai retornar True quando devia ser False.

 

Acho mais fácil acumular a soma com o cálculo da quantidade de pessoas que entram e saem, assim só precisa de um if para comparar com a capacidade máxima,

soma += -seq[pos] + seq[pos + 1]

 

Com a lista [0,5,2,10,3,3,5,2,7,0] este é o resultado da quantidade de pessoas no elevador a cada loop: 5, 13, 13, 10 e 3. Veja que no segundo a soma já passou a capacidade máxima de 10 e a função já pode retornar False.

 

 

Postado

@Midori eu teria então que excluir os indices i e j e usar só o pos, certo ?

soma += -seq[pos] + seq [pos + 1]
pos = pos + 1 

mas quando eu adiciono esse pos = pos + 1 pra ir acumulando na soma ele fica dando o erro ''list index out of range''

Postado
15 minutos atrás, Felipe2719 disse:

eu teria então que excluir os indices i e j e usar só o pos, certo ?

Sim, só tem que usar a variável pos. E para não dar esse erro de list index o incremento tem que ser de dois: pos = pos + 2.

Postado
def questao(capmax,seq):
  pos = 0
  
  while pos<len(seq):
    soma = 0
    if soma<=capmax:
    soma+= seq[pos] + seq[pos + 1 ]
    pos = pos + 2
  return (capmax<=soma)

continua retornando a true pra qualquer valor :c

acho que o meu problema é na hora de retornar ou fazer a comparação do if, se eu troco um dos dois ou sempre da false ou sempre da true

  • Solução
Postado

@Felipe2719 Dessa forma não está acumulando a soma já que sempre atribui 0 a cada loop. E a soma deve ser comparada com capmax após o cálculo. O código corrigido,

 

def questao(capmax,seq):
    pos = 0
    soma = 0
    while pos < len(seq):
        soma += -seq[pos] + seq[pos + 1]
        if soma > capmax:
            return False
        pos += 2
    return True

 

  • Obrigado 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!