Jump to content

Questão de laços de repetição


marcelolp

Postagens Recomendadas

Bom dia. Estou aprendendo um pouco de python (sou iniciante) e estou com dificuldade nessa questão abaixo:

Escreva um programa em Python que lê uma sequência de dígitos, sendo cada um dos dígitos fornecido numa linha separada, e calcula o número inteiro composto por esses dígitos, pela ordem fornecida. Para terminar a sequência de dígitos é fornecido ao programa o inteiro −1. Por exemplo, lendo os dígitos 1 5 4 5 8, o programa calcula o número inteiro 15458. (Use laços de repetição).

Tentei fazer dessa forma abaixo 👇

num = int(input('Informe um número: '))
a = num // 1%10
b = num // 10%10
c = num // 100%10
d = num // 1000%10
e = num // 10000%10
print('Número: {}'.format(num))
print(': {}'.format(e))
print(': {}'.format(d))
print(': {}'.format(c))
print(': {}'.format(b))
print(': {}'.format(a))

Gostaria que o programa pedisse um número de cada vez e ao final mostrasse o número formado. Também gostaria de saber como faço a parada digitando um número negativo. Desde já agradeço!

Link to comment
Compartilhe em outros sites

oi!

Pelo que entendi, a captura de dados vai ser uma lista de números, ex:

o numero 15458 é uma lista [1, 5, 4, 5, 8]
Essa lista é interrompida quando o usuario escreve -1 (aqui provavelmente vc vai fazer um while, recebendo um digito e salvando na lista, e quando o digito for -1, ele interrompe o loop)

 

depois de ter essa lista montada, ele quer quer vc junta os números da lista pra então formar o numero 15458 (o problema é meio estranho mesmo, mas foi isso que entendi).

 

Resumindo, acredito que vc vai ter que fazer um while, e dentro dele vc faz um input pra pegar um unico digito. Se o digito for -1, então vc da um break para sair do loop. Caso seja diferente de -1, ele deve adicionar nesse array de numeros.

 

Depois do loop, vc deve juntar os numeros do array para formar o numero "final"

 

image.png

note que os números estão sendo captados como texto, nao como int. Aqui convêm uma conversão e um tratamento de dados.

 

consegui te ajudar?

Link to comment
Compartilhe em outros sites

bom, o usuário vai digitar 1 digito de cada vez.

pra cada digito digitado, todos os digitos anteriores devem avançar um digito pra esquer, ou seja, ele deve ser 10x maior. ex:

digitei 1, ele vale 1

digitei 2, agora o 1 deve vale 10x mais, ou seja, 10, e então soma o 2 ficando 12.
digitei 5, o 12 agora deve vale 10x mais, ous eja, 120, e então somar 5, ficando 125

digitei 1, o 125 deve valer 10x mais, ficando 1250, e então soma 1

 

 sacou?

 

pensando em código, você pode inciar uma variavel "resultado" = 0, fazer um laço pra ficar recebendo 1 numero de cada vez e então fazer a soma com a multiplicação

resultado = resultado * 10 +  int(numero) 

Link to comment
Compartilhe em outros sites

Em 31/03/2022 at 15:36, geovaniif disse:

o input captura o numero como texto. Vc precisa fazer um cast dele para inteito

só fazer um int(numero), ou então colocar o input dentro do int(aqui_vai_o_input)

Beleza, fiz isso. Porém quando digito -1 ele não faz a parada. Como posso resolver isso? (Código abaixo)

resultado = 0
while True:
  numero = int(input('Digite um número: '))
  if numero == '-1':
    break
calculo = resultado * 10 + numero
print('O número é: ', calculo)

 

Link to comment
Compartilhe em outros sites

1 hora atrás, geovaniif disse:

agora o seu if está comparando com uma string 🤣, tem que tirar as aspas do -1

Beleza. Agora quando eu faço a parada digitando -1, o resultado está dando -1

resultado = 0
while True:
  numero = int(input('Digite um número: '))
  if numero == -1:
    break
calculo = resultado * 10 + numero
print('O número é: ', calculo)

O que errei dessa vez? 🤭

Link to comment
Compartilhe em outros sites

kkkkk, certo

agora a sua linha da variável calculo está ligeiramente errada. Antes de mais nada, ela deve estar dentro do while. Além disso,  a variável calculo em si não precisa existir.  Se você trocar a variável calculo pela variável resultado nos dois lugares em que ela foi escrita, ai então fica correto.

Você precisar aprender a fazer o que chamamos de "teste de mesa". Basicamente é executar o programa linha a linha no papel, ou na cabeça, pra você entender o que ele está fazendo.

Pense que a entrada dos dados via ser [5,2,6,-1]

Resultado vale 0
Entra no laço
numero recebe 5
numero é != de -1, logo não entra no if
resultado recebe ele mesmo (0) * 10 + numero (5), ficando como resultado = 5
repete loop*
numero é 2
numero nao é -1, nao entra no if
resultado recebe ele mesmo (5 agora) *10 + 2, ficando resultado = 5*10+2,ou seja 50+2, ou seja 52 (olha só!)
repete loop*
numero é 6
numero não é -1, nao entra no if
resultado é 52*10+6 -> 520+6 -> 526
repete loop*
numero é -1
numero é -1 !!! entra no if
if interrompe o loop
resultado, agora fora do loop, tem alor 526
printa resultado!

Link to comment
Compartilhe em outros sites

@geovaniifBeleza, deu um pouco certo, porém ao digitar 5, 2, 6, -1 o resultado está dando: 5259.

Código abaixo:

resultado = 0
while True:
  numero = int(input('Digite um número: '))
  resultado = resultado * 10 + numero
  if numero == -1:
    break
print('O número é: ', resultado)

O que errei dessa vez? 😆

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...