Jump to content
Fórum Script Brasil
  • 0

Ajuda com o programa em Python


rquevedo
 Share

Question

pessoal estou iniciando a programar em Python, esse programa tem que converter de decimal para binário, porem só posso digitar números de 0 a 1000000, e quando digito ex: 100000000000000000 o programa termina o certo seria ele solicitar novamente o numero dentro do intervalo correto, alguém tem como me ajudar ??
def binadecimal(dec):
binario = ""
num=0-1
while dec // 2 != 0:
binario = str(dec % 2) + binario
dec = dec // 2
return str(dec) + binario
num = int(input("N° Decimal:"))
while num>=0 or num<=1000000:
print(binadecimal(num))
Edited by rquevedo
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Ola

O problema esta na comparação or.

Vamos traduzir para ficar facil ver o porque:

Enquanto num ''maior ou igual'' 0 ou num ''menor ou igual'' 1000000

Então 100000000000...... é maior do que zero, já temos uma verdade pois ou é um ou outro, precisamos de uma verdade apenas.

Troque or por and:

Enquanto num ''maior ou igual'' 0 e num ''menor ou igual'' 1000000

Precisamos de duas verdades

Link to comment
Share on other sites

  • 0

Olá, valeu pela dica, porem ao trocar or por and, ao digitar um numero dentro do intervalo ele faz a formula, mas fica imprimindo o resultado inúmeras vezes.

Ao digitar um valor fora do intervalo ele continua finalizando o programa sem pedir para digitar o valor novamente.

def binadecimal(dec):
binario = ""
while dec // 2 != 0:
binario = str(dec % 2) + binario
dec = dec // 2
return str(dec) + binario
num = int(input("N° Decimal:"))
while num>=0 and num<=1000000:
print(binadecimal(num))
Edited by rquevedo
Link to comment
Share on other sites

  • 0

Isso mesmo, só ver a logica que acontece.

É pedido um numero e armazenado em num

Depois verifica a condição do loop

Se falso, termina o script

Se verdadeiro, imprime o resultado da função com num como parâmetro, ate o loop ser concluído,

mas como num não esta sendo pedido novamente, o loop se torna infinito, e executa a função como o mesmo valor

Deixo aqui um simples algorítimo para seu problema, o único mal é que ele entra diretamente em laço infinito, fica ai então uma coisa para você pesquisar

enquanto verdadeiro:
    entre num

    se num 'maior ou igual' 0 e num 'menor igual' 1000000:
        rodar função e exibir o resultado

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...