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.
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.
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.
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.
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.
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
teria alguma outra maneira de eu imprimir o 1 sem ficar dessa como coloquei, meio “artificial” ?
Para fazer isso você pode mudar a ordem em que as coisas acontecem:
Repare que o teste você pode fazer diretamente no loop, sem precisar daquela variável cont.
mas aí o valor de x vai ficar repetindo no loop…
como assim? o valor de x é alterado a cada iteraçao.
então, se eu imprmimir o valor dele inicial (1) no loop, ele vai repetir todas as n vezes.
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=' ')
ah sei! 
obrigada!
no caso mantenho o if x > n ?
É pra mim a resposta? Se sim a resposta é não, o while já faz a condição…
caramba, eu fiz muito grande o codigo e o seu deu a mesma coisa e menor"! hihihi
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
seria porque ele vai pegar o primeiro valor de x e imprimir logo para depois cair na operação?