“”"
Primero definimos una función que reciba un entero positivo y retorne un entero positivo acortado en un número es decir, si se recibe 7432 necesitamos que retorne 743, esto se logra haciendo la división entera del número entre 10, algebraicamente x // 10, por otro lado necesitamos almacenar cada número solo una vez, esto se logra con la operación x%10, por ejemplo el 7432%10 = 2, con esto podemos ir tomando los números a medida que van apareciendo, y con el método “get” del tipo dict podemos ir almacenando cada número solo una vez e ir contando su número de apariciones.
Está función aprovecha el hecho que los dict son mutables para hacer 3 operaciones a la vez, ir retornando los número recortados, buscar si aparece el número retirado, guardarlo si no existe y sumar uno cada vez que aparezca
"""
def contar(numero:int,diccionario:dict)->int:
digito = numero%10
diccionario[digito] = diccionario.get(digito,0)+1
return numero//10
“”"
Ahora usando la función definida creamos la interfaz con el usuario para pedir el número a validar:
-para esto pedimos el número y lo convertimos en entero.
-definimos nuestro diccionario (en el que se va a almacenar nuestro conteo.
-definimos un ciclo while en el que nos aseguramos que tomemos todos los números que componen el número a evaluar, puesto que cuando tengamos
una sola unidad su división entera entre 10 será 0, es decir 8//10 = 0, en ese momento nuestro ciclo se detendrá y habremos tomado cada número.
-en el cuerpo del while hacemos llamado de la función creada y usamos como parámetros el número ingresado por el usuario y el diccionario vacío
definido previamente
-esto nos retornará el número recortado, y por detrás habrá almacenado el primer número que apareció como llave y su valor será uno, ejemplo
si el usuario ingreso 4332, nuestra función en su primera iteración habrá guardado en la variable cuenta el 433 y en el diccionario habrá guardado el número “2” una vez, es decir, cuenta = 433 y conteo = {2:1)
-nuestro ciclo se repetirá hasta que contemos con la decena, porque el último número no entrará al ciclo por eso se añade la sentencia “conteo[cuenta] = conteo.get(cuenta,0)+1” como penúltima línea de código
conteo = {}
while cuenta//10 >= 1:
cuenta = contar(cuenta,conteo)
conteo[cuenta] = conteo.get(cuenta,0)+1
print(conteo)