Enviar um café pro programador

Par ou Ímpar em Python (e outros múltiplos)

Neste tutorial de nosso Curso de Python Online Grátis, vamos fazer um script que diz se o número digitado pelo usuário é par ou ímpar.

Vamos fazer isso usando o operador % de resto da divisão.



Resto da Divisão em Python: %

Antes de mostrar o exercício, resolver e comentar o código de como descobrir se um número é par ou ímpar em Python, precisamos revistar um tutorial antigo:

Operações matemáticas em Python

Lá estudamos o operador % que é o operador de resto da divisão.
Talvez você não lembre direito que troço é isso de resto da divisão.

Mas vamos voltar pra época da escolinha, quando fazíamos continhas de dividir:

Como saber se o número é par ou ímpar
O segredo está ali, no resto. O que sobra.
Ele é o segredo de tudo.

Para saber se um número é par ou ímpar, basta dividir ele por 2.
Se for par, o resto é sempre 0, não sobra nada.
Já se for ímpar, vai sempre ter resto 1.



Saber se é Par ou Ímpar em Python

" Faça um Programa que peça um número inteiro e determine se ele é par ou ímpar. Dica: utilize o operador módulo (resto da divisão): %"

Inicialmente pedimos um número ao usuário, e armazenamos na variável 'numero'. Agora, com um simples teste condicional IF vamos verificar o resto da divisão dele por 2.

Se o resultado for 0, é par e cai no print do IF, dizendo que é par.
Se não for 0 o resto, é porque vai ser 1 e cai no ELSE onde printamos que é ímpar:

    numero = int(input('Digite um inteiro: '))

    if (numero%2) == 0:
        print("Par")
    else:
        print("Ímpar")



Aperfeiçoando código Python

Já dissemos, em algum tutorial anterior, que 1 equivale ao True e 0 ao False.
Quando fazemos o resto da divisão por 2, o resultado é sempre 0 ou 1.

Então nosso código poderia ser assim:

    numero = int(input('Digite um inteiro: '))

    if numero%2 :
        print("Ímpar")
    else:
        print("Par")


Veja que se o resultado da operação for 1, cai no IF que diz que é ímpar,se for 0 vai pro ELSE que diz que é par.

Bem mais chique, não acha?

Resto da divisão por 3:

"Faça um programa que recebe um inteiro do usuário e diz se esse número é múltiplo de 3 ou não".

Veja o código e tente entender:

    numero = int(input('Digite um inteiro: '))

    if not (numero%3) :
        print("É múltiplo de 3")
    else:
        print("Não é múltiplo de 3")

Um número é múltiplo de 3 se o resto da divisão dele por 3 for 0.
Então fazemos o teste: numero % 3

Se este resultado for 0, o IF não é executado, pois dá falso.
Então o que fazemos? Invertemos com o operador not

Sempre que algo for TRUE o not transforma em FALSE, e vice-versa.
Assim colocamos um not antes do (numero%3) e quando for múltiplo de 3, a expressão not (numero%3) vira TRUE e cai no IF dizendo que é múltiplo de 3.

Fodástico, não ?

Curiosidade sobre resto da divisão %

O resto da divisão de um número por 2 pode ser:
0 ou 1

O resto da divisão de um número por 3 pode ser:
0, 1 ou 2

O resto da divisão de um número por 4 pode ser:
0, 1, 2 ou 3

O resto da divisão de um número por 5 pode ser:
0, 1, 2, 3 ou 4
...
...
...
O resto da divisão de um número por n pode ser:
0, 1, 2, 3, ..., (n-1)

21 comentários:

  1. Fiz o meu assim
    num = int(input('Digite um número inteiro qualquer: '))
    div = num % 2
    if div == 1:
    print('O número digitado é ÍMPAR!')
    else:
    print('O número digitado é PAR!')

    ResponderExcluir
    Respostas
    1. mas simples assim:
      n = int(input('Digite um número: '))
      if (n%2) == 0:
      print(f'{n} é um número par.')
      else:
      print(f'{n} é um número ímpar.')

      Excluir
    2. irmão na hora do print dentro do IF, os seus colchetes você tira o "n" e coloca o ".format(n)" pq assim a sua linha de codigo fica mais bonita e limpa

      Excluir
  2. muito obrigado me ajudou muito

    ResponderExcluir
  3. Por quê inverte as posições de 'Impar' e 'Par', nos 2 primeiros exemplos? N'ao entendi a lógica.

    ResponderExcluir
    Respostas
    1. porque se você dividir qualquer número par por 2 ele vai dar 1, qualquer outra coisa além disso é ímpar

      Excluir
    2. nb = float(input("digite um número"))
      if nb % 2:
      print("ímpar")
      else:
      print("par")
      #pode testar

      Excluir
  4. num1 = int(input("Informe um número: "))
    if num1%2==0:
    print("Este número é par")
    else:
    print("Este número é impar")

    ResponderExcluir
  5. pq um número float ex: 4.2 o resultado é impar?

    ResponderExcluir
    Respostas
    1. Acho que essa questão se refere a numeros inteiros. Não tem sentido questionar decimail par ou impar...

      Excluir
  6. Peça ao usuário dois valores, um inicial e outro final. Mostre só os números pares
    dentre os números digitados.Por favor,me ajudam

    ResponderExcluir
  7. amigos, preciso de uma ajuda: preciso montar, em python, uma lista onde seo numero for par entra na lista, se for impar retira e zero esvazia a pilha e imprime os elemtnos da ordem que foram tirados...

    ResponderExcluir
  8. Fiz o meu assim ficou bom?:

    A = float(input("Digite um número inteiro para descobrir se ele é par ou ímpar"))

    if isinstance(A, int) and A % 2 == 0:
    print(f'O número {A} é par')
    elif isinstance(A, int) and not A % 2 == 0:
    print(f'O número {A} é ímpar')
    else:
    print(f'Deu um erro, por favor digite um número inteiro')

    ResponderExcluir
  9. Eu fiz assim, esta certo?

    num = input('Informe seu numero: ')
    if num.isdigit():
    num = int(num)
    if num % 2 == 0:
    print('Par')
    else:
    print('Ímpar')
    else:
    print('N~so é um numero inteiro')

    ResponderExcluir
  10. ajudou demais, obrigado!

    ResponderExcluir
  11. n = input('digite um número inteiro: ')

    while n == str(n):
    try:
    n = int(n)

    except ValueError as erro:
    print('o número não é inteiro')
    n = input('digite um número inteiro: ')

    n = int(n)
    if n % 2 == 0 and n != 0:
    print(f'{n} é par')
    elif n == 0:
    print('zero não dá né meu neubre')
    else:
    print(f'{n} é ímpar')

    # com debug

    ResponderExcluir
  12. n = input('digite um número inteiro: ')

    while n == str(n):
    try:
    n = int(n)

    except ValueError as erro:
    print('o número não é inteiro')
    n = input('digite um número inteiro: ')

    n = int(n)
    if n % 2 == 0 and n != 0:
    print(f'{n} é par')
    elif n == 0:
    print('zero não dá né meu neubre')
    else:
    print(f'{n} é ímpar')

    # com debug

    ResponderExcluir