Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com o programa em Python


rquevedo

Pergunta

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))
Editado por rquevedo
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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))
Editado por rquevedo
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...