Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Projeto] Exercício 10 - Verificação dos números

#10. Um programa deve ser escrito para ler dois números e, em seguida, perguntar à pessoa usuária qual operação ele deseja realizar.
#O resultado da operação deve incluir informações sobre o número - se é par ou ímpar, positivo ou negativo e inteiro ou decimal.
opcao = int(input('Escolha uma operação: \n1-Soma; \n2-Subtração; \n3-Multiplicação; \n4-Divisão; \n'))
num1 = int(input('Digite um número: '))
num2 = int(input('Digite outro número: '))

if opcao == 1:
  soma = num1 + num2
  print(f'opcao: {opcao}\nSoma:{num1}+{num2}={soma}')
  operacao = soma
elif opcao == 2:
  subtracao = num1 - num2
  print(f'opcao: {opcao}\nSubtração:{num1}-{num2}={subtracao}')
  operacao = subtracao
elif opcao == 3:
  multiplicacao = num1 * num2
  print(f'opcao: {opcao}\nMultiplicação:{num1}*{num2}={multiplicacao}')
  operacao = multiplicacao
elif opcao == 4:
  divisao = num1 / num2
  print(f'opcao: {opcao}\nDivisão:{num1}/{num2}={divisao}')
  operacao = divisao
  operacao = float(operacao)
else:
  print('Opção inválida')

resto = operacao % 2

if resto == 0:
  print('número par')
else:
  print('número ímpar')

if operacao > 0:
  print('número positivo')
else:
  print('número negativo')

if type(operacao) is float:
  print('número decimal')
else:
  print('número inteiro')
4 respostas
solução!

Oi Bruno, tudo bem?

Que alegria ver seu projeto concluído e compartilhado aqui! Parabéns pelo esforço e dedicação, é muito gratificante ver o progresso dos estudantes.

Lembre-se de que, além de compartilhar aqui no fórum, você também pode marcar a Alura nas redes sociais para que mais pessoas possam ver seu trabalho.

A Alura tem perfis em várias redes sociais, você pode encontrá-los aqui. E não se esqueça do nosso Discord de alunos da Alura.

Um abraço e bons estudos.

Olá pessoal! Estou com uma dificuldade nesse exercício. Na parte da operação de divisão, não importa qual número escolha, o resultado será sempre decimal. Testei esse código do Bruno também, dividi 45 por 5 (deu 9.0). Apesar de o resultado ser inteiro, o programa entendeu como tipo float. Abaixo o resultado do teste do código do Bruno:

Escolha uma operação: 1-Soma; 2-Subtração; 3-Multiplicação; 4-Divisão; 4 Digite um número: 45 Digite outro número: 5 opcao: 4 Divisão:45/5=9.0 número ímpar número positivo número decimal

===============================================

E aqui meu código (mais bagunçado, claro) com o resultado:

numero1 = int(input('Digite um número de 1 a 100: ')) numero2 = int(input('Digite outro número de 1 a 100: ')) operador = input('\nEscolha uma opção: \n1: Adição \n2: Subtração \n3: Multiplicação \n4: Divisão\n')

if operador == '1': soma = numero1 + numero2 print(f'A operação é adição: {numero1} + {numero2} = {soma}') restoSoma = soma % 2

if restoSoma >= 1: print(f'O número {soma} é ímpar.') else: print(f'O número {soma} é par.')

if type(soma) is float: print(f'O número {soma} é decimal.') else: print(f'O número {soma} é inteiro.')

if soma < 0: print(f'O número {soma} é negativo.') else: print(f'O número {soma} é positivo.')

elif operador == '2': sub = numero1 - numero2 print(f'A operação é subtração: {numero1} - {numero2} = {sub}') restoSub = sub % 2

if restoSub >= 1: print(f'O número {sub} é ímpar.') else: print(f'O número {sub} é par.')

if type(sub) is float: print(f'O número {sub} é decimal.') else: print(f'O número {sub} é inteiro.')

if sub < 0: print(f'O número {sub} é negativo.') else: print(f'O número {sub} é positivo.')

elif operador == '3': mult = numero1 * numero2 print(f'A operação é multiplicação: {numero1} * {numero2} = {mult}') restoMult = mult % 2

if restoMult >= 1: print(f'O número {mult} é ímpar.') else: print(f'O número {mult} é par.')

if type(mult) is float: print(f'O número {mult} é decimal.') else: print(f'O número {mult} é inteiro.')

if mult < 0: print(f'O número {mult} é negativo.') else: print(f'O número {mult} é positivo.')

elif operador == '4': div = numero1 / numero2 print(f'A operação é divisão: {numero1} / {numero2} = {div}') restoDiv = div % 2

if restoDiv >= 1: print(f'O número {div} é ímpar.') else: print(f'O número {div} é par.')

if type(div) is float: print(f'O número {div} é decimal.') else: print(f'O número {div} é inteiro.')

if div < 0: print(f'O número {div} é negativo.') else: print(f'O número {div} é positivo.')

Digite um número de 1 a 100: 45 Digite outro número de 1 a 100: 5

Escolha uma opção: 1: Adição 2: Subtração 3: Multiplicação 4: Divisão 4 A operação é divisão: 45 / 5 = 9.0 O número 9.0 é ímpar. O número 9.0 é decimal. O número 9.0 é positivo.

=====================================

Como havia dito, o resultado da divisão é um número inteiro, mas ele é interpretado como float. Como resolver isso? Obrigado pela atenção equipe!

Caro Guilherme, obrigado por notar o erro no meu código, eu dei uma pesquisada, com o auxílio do chat GPT fiz a correção. Tem uma função built in (nativa) no python que verifica se o número é inteiro ou não, a função é a isinteger. No caso o meu código ficou da seguinte forma, para esse trecho:

if operacao.is_integer():
  print('número inteiro')
else:
  print('número decimal')

outra forma que vejo que daria certo é inserir uma verificação do resto da divisão (operador %), se viesse com resto 0, não teria casa decimal e portanto, seria inteiro ou verificar se existe um ponto flutuante no resultado, pesquisei aqui e vi que existe funções de manipulação de string que dá pra fazer isso, porém, não testei esses dois últimos casos. Espero que essa resposta te ajude e obrigado, novamente, pelo feedback do meu código.

Acabei de pegar um erro aqui e verifiquei que o uso dessa função só funciona se o número for float viu, que no caso, todo resultado de uma divisão é float. Pelo menos foi o que deduzi fazendo o código abaixo:

resultado = 10 / 2
type(resultado)