Informática, perguntado por bmax1997, 11 meses atrás

Programação em Python 3: Dado dois números inteiros x e y, sua tarefa é calcular o valor absoluto da subtração entre esses números. Formato de entrada: A entrada é composta por dois inteiros x e y (0 < x, y < 10⁹). Formato de saída: Você deve imprimir o valor absoluto da subtração dos dois inteiros da entrada. Lembre-se da quebra de linha ao final da saída.

Soluções para a tarefa

Respondido por GeBEfte
3

Não fica claro se "x" e "y" devem estar o intervalo (0 , 10⁹) ou se apenas x deve ser maior que 0 enquanto que y deve ser menor que 10⁹.

Minha resolução atende a segunda possibilidade.

Os comentários do programa se encontram abaixo do código.

--------------------------------------------------------------------------------------------------

while True:

 x=int(input('Digite o valor inteiro de x (maior que 0): '))

 if x>0:

   break

 print('\033[031mO valor de "x" deve ser maior que 0 !!\033[m\n')

while True:

 y=int(input('\nDigite o valor inteiro de x (menor que 10^9): '))

 if y<pow(10,9):

   break

 print('\033[031mO valor de "y" deve ser menor que 10^9 !!\33[m')

print(f'\nO valor absoluto da subtração entre x e y vale {abs(x-y)}\n')

--------------------------------------------------------------------------------------------------

Comentários:

--> O código utiliza laços while infinitos para garantir que os números digitados pelo usuário estejam dentro dos intervalos propostos.

Assim, o programa só segue quando um valor válido seja digitado, ou seja, lemos o dado, e verificamos com um condicional (if), caso o dado seja valido, saímos do loop (break).

--> Por valor estético, quando o dado não está no intervalo devido, mostramos ao usuário uma mensagem com cor diferente (vermelha) informando-o.

--> Depois de ler os valores de "x" e "y", mostramos ao usuário (print) o valor da subtração dos números em modulo utilizando a função abs().

Anexos:

GeBEfte: Embora tenha esquecido de falar o código não possui um controle de exceções.
Perceba que a linha em questão (2) pede para ser digitada um string que possa ser convertida para inteiro, em outras palavras, está pedindo um numero inteiro.
GeBEfte: Note que não foi digitado um numero inteiro, foi digitado '5 6', há um espaço entre os números.
Caso queira prevenir esta exceção, podemos alterar o código para:
GeBEfte: while True:
..x=input('Digite o valor inteiro de x (maior que 0): ')
..try:
....x=int(x)
..except:
....print(f'\033[031mERRO! \"{x}\" não é um numero inteiro\033[m')
..else:
....if x>0:
......break
....else:
......print('\033[031mO valor de "x" deve ser maior que 0 !!\033[m\n')
GeBEfte: O site não deixa eu colocar o resto do codigo mas é similar para a validação do "y"
bmax1997: Continua mostrando erro :( . O erro agora é: File "/HuxleyCode.py", line 8
break
^
SyntaxError: 'break' outside loop
bmax1997: line 9*
bmax1997: Coloquei de forma errada, mas mesmo assim continua dando erro no The Huxley. O erro >>>: Traceback (most recent call last):
File "/HuxleyCode.py", line 2, in
x=input('Digite o valor inteiro de x (maior que 0): ')
EOFError: EOF when reading a line
bmax1997: Eu vou fazer outra pergunta pra ficar melhor.
GeBEfte: Não era pra dar esse erro, aqui está rodando sem problemas. Tenta verificar em outra IDE, não conheço esse site huxley, pode ser que o programa/site esteja com dificuldade de saber onde ele deve capturar os dados passados pelo usuário.
bmax1997: Possa ser que eu esteja colocando o código de forma errada. Você pode me mandar o código na outra pergunta que eu fiz ?
Perguntas interessantes