Ajude nosso projeto a se manter online, faça um PIX de qualquer valor:
programacao.progressiva@gmail.com

Achar Unidade, Dezena, Centena...de um número em Python

Nesse exercício que iremos resolver e comentar o código, vamos aprender a usar o operador %, também conhecido por "resto da divisão", em nossa Apostila de Python Online.



Exercício de Python

"Faça um Programa que leia um número inteiro menor que 1000 e imprima a quantidade de centenas, dezenas e unidades do mesmo.

Exemplo:
123 = 1 centena(s), 2 dezena(s) e 3 unidade(s)
12 = 1 dezena(s) e 2 unidade(s)
Testar com: 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16"

Resto da Divisão em Python

Para sabermos o valor da unidade de um número inteiro positivo qualquer, em Python, basta usar o operador de resto da divisão % da seguinte maneira:

unidade = numero % 10

Pronto. Só isso.
Se nosso número é 123 e fizermos 123 % 10, o resultado vai ser 3.
Então 3 é nossa unidade.

E como achar a dezena?

O próximo passo é transformar nosso número de 123 pra 12 (excluímos a unidade).
Primeiro, subtraímos do número o valor da unidade.
123 - 3 = 120

Depois, dividimos o número por 10:
120 / 10 = 12

Prontinho, pra achar a dezena basta fazer: 12 % 10 = 2

Em programação Python, fica assim:
numero = (numero - unidade) / 10 # Passa de 123 pra 123-3 = 120 / 10 = 12
dezena = numero % 10                 # dezena = 12 % 10 = 2

E pra achar o valor da centena?
De novo, transformamos de 12 pra 1 (excluímos 2).

Subtraímos a dezena achada: 12 - 2= 10
E novamente dividimos por 10: 10/10 = 1

Em programação Python:
numero = (numero - dezena)/10
centena = numero

No caso, paramos por aí. Por só queremos achar até a centena.
Nesse ponto, nosso número vai ser o mesmo valor da centena.

Se quiser para números maiores, só seguir essa lógica.




Código comentado em Python

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

    # Extraindo a unidade
    unidade = numero % 10

    # Eliminando a unidade de nosso número
    numero = (numero - unidade)/10

    # Extraindo a dezena
    dezena = numero % 10

    # Eliminando a dezena do número original, fica a centena
    numero = (numero - dezena)/10
    centena = numero

    # Fazendo ser inteiros
    dezena = int(dezena)
    centena = int(centena)
    print(centena,'centena(s),',dezena,'dezena(s) e',unidade,'unidade(s)')


14 comentários:

  1. Muito obrigado, me ajudou num exercicio

    ResponderExcluir
  2. num=int(input('Digite um numero menor que 1000: '))
    if num>=1000:
    print('Numero nao valido!')
    else:
    if num<10:
    print(num,'unidades')
    elif 9<num<100:
    dezenas=int(num/10)
    unidades=num%10
    print(dezenas,'dezenas,',unidades,'unidades')
    else:
    #99<num<1000
    centenas=int(num/100)
    dezenasAux=num-(centenas*100)
    dezenas=int(dezenasAux/10)
    unidades=num-(centenas*100)-(dezenas*10)
    print(centenas,'centenas',dezenas,'dezenas,',unidades,'unidades')

    ResponderExcluir
    Respostas
    1. Em relação ao código resolvido da página. Tive dificuldade de entender sobre o resto da divisão quando o dividendo é menor do que divisor, custei a entender que 2%10=2 pois (2-2)/10 tem o resto zero. Muito bom o código do criador da página.

      Excluir
  3. numb = int( input('Numero: '))
    cent = 0
    dec = 0
    uni = 0
    if numb <= 1000:
    cent = int(numb/100)
    dec = int(numb/10) - 10*cent
    uni = numb - (100*cent + 10*dec)
    print('%d centenas, %d dezenas e %d unidades.' %(cent, dec, uni))

    #Eu fiz um pouco diferente da solução mostrada.

    ResponderExcluir
  4. n=input('Digite um numero inteiro menor que 1000:')


    hundred=n[0]
    dozens=n[1]
    unity=n[2]

    print('Seu nÚmero tem {0} centenas ,{1} dezenas e {2} unidades.'.format(hundred,dozens,unity))

    ResponderExcluir
  5. num = int(input('Digite um número menor que 1000: '))

    if num >= 1000 and num < 0:
    print ('Número inválido')
    else:
    if num >= 100 :
    num = str(num)
    c,d,u = num[0],num[1],num[2]
    print(num, ' = ' ,c, 'centenas' ,d, 'dezenas' ,u, 'unidades')
    elif num >=10:
    num = str(num)
    d,u = num[0],num[1]
    print(num, ' = ' ,d, 'dezenas' ,u, 'unidades')
    else:
    num = str(num)
    u = num[0]
    print(num, ' = ' ,u, 'unidades')

    ResponderExcluir
  6. num = int(input('Digite um número entre 0 e 999: '))
    #O número deve ser menor que 1000

    if num >= 100 and num <= 999:
    n = str(num)
    print(f'Unidade: {n[2]} \nDezena: {n[1]} \nCentena: {n[0]}')
    elif num >= 10 and num <= 99:
    n = str(num)
    print(f'Unidade: {n[1]} \nDezena: {n[0]}')
    elif num < 10 and num >= 0:
    n = str(num)
    print(f'Unidade: {n[0]} \nEste número possui apenas unidade(s)!')
    else:
    print('Número inválido! Por favor digite um número entre 0 e 999.')

    ResponderExcluir
  7. numero = int(input("Insira um numero menor que 1000\n")) # 326
    centenas = 0
    dezenas = 0
    unidade = 0


    if numero < 1000:
    if numero >= 100:
    centenas = int(numero / 100)
    numero = numero % 100
    dezenas = int(numero / 10)
    unidade = numero % 10
    print(centenas, "centenas,", dezenas, "dezenas", "e", unidade, "unidades")
    else:
    numero = numero % 100
    dezenas = int(numero / 10)
    unidade = numero % 10
    print(dezenas, "dezenas", "e", unidade, "unidades")
    else:
    print("Numero fora do intervalo indicado")

    ResponderExcluir
  8. num = int(input('Informe um número:'))
    u = num//1 % 10
    d = num//10 % 10
    c = num//100 % 10
    m = num//1000 % 10

    print('Analisando o número: {}' .format(num))
    print('Analisando unidadde:{}' .format(u))
    print('Analisando dezena: {}' .format(d))
    print('Analisando centena: {}' .format(c))
    print('Analisando milhar: {}' .format(m))

    ResponderExcluir
  9. Não sei se foi o melhor código porém eu fiquei animado quando eu terminei ele

    #Pedindo valor
    valor=int(input('Dgite um valor: '))

    #Comparando se valor é menor que 1000
    if(valor <= 1000):
    #Calculos
    uni=valor % 10
    dez=valor/10 % 10
    cent=valor/100 % 100
    #Comparando valor
    print('Neste número a %d centenas, %d dezenas e %d unidades'%(cent,dez,uni))
    else:
    print('Infelizmente o número %d é maior que mil'%valor)

    ResponderExcluir
  10. Não sei se foi o melhor código porém eu fiquei animado quando eu terminei ele

    #Pedindo valor
    valor=int(input('Dgite um valor: '))

    #Comparando se valor é menor que 1000
    if(valor <= 1000):
    #Calculos
    uni=valor % 10
    dez=valor/10 % 10
    cent=valor/100 % 100
    #Comparando valor
    print('Neste número a %d centenas, %d dezenas e %d unidades'%(cent,dez,uni))
    else:
    print('Infelizmente o número %d é maior que mil'%valor)

    ResponderExcluir
  11. # Este programa faz numero de 0 a 999 e separa em C D U

    continuo = True

    while continuo:
    print('\n{:.^45}'.format('M C D U'))
    # Entrada do numero para analize
    n = int(input('Digite um numero ate 9999: '))

    if n <= 9999:

    # Imprime o valor de n antecedido por zeros
    print('{:0>4}'.format(n), end=' => ')

    # Extraindo a unidade
    u = n // 1 % 10

    # Extraindo a Dezena
    d = n // 10 % 10

    # Extraindo a Cecntena
    c = n // 100 % 10

    # O que Resta e o milhar
    m = n // 1000

    # Transformar os valores Float em Int
    d = int(d)
    c = int(c)
    m = int(m)

    # Exibe os valores na tela
    print('{}UM|{}C|{}D|{}U'.format(m, c, d, u))

    else:
    print('Este numero esta acima de 9999.\nEste algoritmo funciona com numeros menores...')

    ResponderExcluir
  12. Segue abaixo o meu código:


    import math
    numero = int(input('Digite um número inteiro entre 0 e 1000: '))
    centena = math.floor(numero/100)
    dezena = math.floor((numero - (centena * 100)) / 10)
    unidade = numero - ((centena * 100) + (dezena * 10))

    if 0 < numero < 1000:
    if centena >= 1:
    if centena == 1:
    if dezena == 1:
    if unidade == 1:
    print(f'{centena} centena, {dezena} dezena e {unidade} unidade')
    elif unidade > 1:
    print(f'{centena} centena, {dezena} dezena e {unidade} unidades')
    else:
    print(f'{centena} centena e {dezena} dezena.')
    elif dezena > 1:
    if unidade == 1:
    print(f'{centena} centena, {dezena} dezenas e {unidade} unidade')
    elif unidade > 1:
    print(f'{centena} centena, {dezena} dezenas e {unidade} unidades')
    else:
    print(f'{centena} centena e {dezena} dezena.')
    elif dezena == 0:
    if unidade == 1:
    print(f'{centena} centena e {unidade} unidade')
    elif unidade > 1:
    print(f'{centena} centena e {unidade} unidades')
    else:
    print(f'{centena} centena')
    elif centena > 1:
    if dezena == 1:
    if unidade == 1:
    print(f'{centena} centenas, {dezena} dezena e {unidade} unidade')
    elif unidade > 1:
    print(f'{centena} centenas, {dezena} dezena e {unidade} unidades')
    else:
    print(f'{centena} centenas e {dezena} dezena.')
    elif dezena > 1:
    if unidade == 1:
    print(f'{centena} centenas, {dezena} dezenas e {unidade} unidade')
    elif unidade > 1:
    print(f'{centena} centenas, {dezena} dezenas e {unidade} unidades')
    else:
    print(f'{centena} centenas e {dezena} dezenas.')
    elif dezena == 0:
    if unidade == 1:
    print(f'{centena} centenas e {unidade} unidade')
    elif unidade > 1:
    print(f'{centena} centenas e {unidade} unidades')
    else:
    print(f'{centena} centenas')
    elif dezena >= 1:
    if dezena == 1:
    if unidade == 1:
    print(f'{dezena} dezena e {unidade} unidade.')
    elif unidade > 1:
    print(f'{dezena} dezena e {unidade} unidades')
    else:
    print(f'{dezena} dezena.')
    elif dezena > 1:
    if unidade == 1:
    print(f'{dezena} dezenas e {unidade} unidade.')
    elif unidade > 1:
    print(f'{dezena} dezenas e {unidade} unidades')
    else:
    print(f'{dezena} dezenas.')
    elif unidade >= 1:
    if unidade == 1:
    print(f'{unidade} unidade.')
    else:
    print(f'{unidade} unidades.')
    else:
    print('Número inválido!')

    '''
    Testes = 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16
    '''



    Ele ficou bem grande, porém obedece fielmente o plural e a colocação de "e" e vírgula. Tenho certeza que há uma maneira mais prática e fácil de fazer isso, mas por enquanto é o melhor que consigo fazer.

    ResponderExcluir