Como posso incluir o 1 no resultado e remover o 128?

15 respostas
T

Boa tarde,

Precisava de uma ajuda em como posso incluir o 1 no resultado e remover o 128. Coloquei o if para x > 100 mas ele imprime mesmo assim o 128.

Obrigada.

15 Respostas

A

Nao dá pra entender do que você tá falando.

Poste o código que você tem, o resultado esperado e o que está acontecendo para podermos te ajudar.

T

Desculpa! Faltei colocar o código, haha!

Aqui:

n = int(input("digite o valor de n: "))
cont = 1
x = 1

while cont <= n:
    x = x * 2  
    print (x)
    cont = cont + 1
    if x >100:
        break

E o enunciado da questão:
. Escreva um laço while para imprimir:
Todas as potências de dois menores que n. Por exemplo, se n for 100, imprimir 1 2 4 8 16 32 64.

A

Agora ficou mais claro:

Sobre imprimir o 1, repare que o x começa com valor 1 e antes de imprimir a primeira vez, você já multiplica por 2, por isso 1 nunca é impresso. Uma soluçao seria sempre imprimiro 1 antes mesmo de entrar no while. Outra seria começar o while imprimindo e depois multiplicar.

Sobre imrprimir maior que 100, repare que você após calcular o valor de x, já imprime o valor diretamente. Se o valor recém calculado for maior que 100, você vai imprimi-lo antes de sair do loop.
Uma soluçao para isso seria mudar a ordem das instruçoes, primeiro testa se é maior do que 100, antes de imprimir.

T

oi abel!

agora ficou assim:

n = int(input("digite o valor de n: "))
cont = 1
x = 1

print (1 ** 2)
while cont <= n:
    x = x * 2
    if x >100:
        break
    print (x)
    cont = cont + 1

no caso como ficaria a outra opção do imprimir o 1? tentei colocar no inicio do while mas não deu.

obrigada

T

teria alguma outra maneira de eu imprimir o 1 sem ficar dessa como coloquei, meio “artificial” ?

A

Para fazer isso você pode mudar a ordem em que as coisas acontecem:

  • Imprima o x
  • Calcule o novo x
  • Testa se é maior que n, se for, sai do loop

Repare que o teste você pode fazer diretamente no loop, sem precisar daquela variável cont.

T

mas aí o valor de x vai ficar repetindo no loop…

A

como assim? o valor de x é alterado a cada iteraçao.

T

então, se eu imprmimir o valor dele inicial (1) no loop, ele vai repetir todas as n vezes.

L

Você não está seguindo o enunciado, o laço precisa ir até n e não até 100, isso serve?

n = int(input("digite o valor de n: "))
x = 1

while x <= n:
    print(x) #1, 2, 4...
    x *= 2 #mesmo que x = x * 2

Se n = 100, imprime até 64
Se n = 128 imprime até 128
Se n = 255 imprime até 128
Se n = 256 imprime até 256

E assim em diante… do jeito que está irá imprimir a cada iteração um abaixo do outro, se quiser um ao lado do outro terá de fazer…

print(x, end=' ')
T

ah sei! :slight_smile:
obrigada!
no caso mantenho o if x > n ?

L

É pra mim a resposta? Se sim a resposta é não, o while já faz a condição…

T

caramba, eu fiz muito grande o codigo e o seu deu a mesma coisa e menor"! hihihi

T

como dessa maneira o 1 sai? hihi

n = int(input("digite o valor de n: "))
x = 1

while x <= n:
print(x)
x = x * 2

T

seria porque ele vai pegar o primeiro valor de x e imprimir logo para depois cair na operação?

Criado 6 de janeiro de 2017
Ultima resposta 6 de jan. de 2017
Respostas 15
Participantes 3