Python - Dígitos

 
Vista:
sin imagen de perfil

Dígitos

Publicado por Erick (3 intervenciones) el 12/03/2016 02:03:35
Buenas,
Con respecto a Python

Una pregunta quiero hacer una progra que al ingresar un número me tire el número mayor del número. Tiene que ser con whiles y no se puede con lists ni strings.
Ej:
Mayor(2268)
8
Y otra es una progra donde le tire los números pares de un número, y forme otro numero diferente, pero no puede ser ni con lists ni con strings ni recursividad.
Ej:
Pares(5722)
22
Por favor urge, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 77
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Dígitos

Publicado por Jorge De Los Santos (54 intervenciones) el 12/03/2016 03:39:34
Hola Erick,

Para lo primero que planteas puedes utilizar lo siguiente:

1
2
3
4
5
6
7
def mayor(n):
    dmax = n%10
    while n > 0:
        if n%10 > dmax:
            dmax = n%10
        n //= 10
    return dmax

Que básicamente lo que hace es obtener el residuo de la división entera entre 10 del número actual, con lo cual se obtiene el último dígito (de las unidades) y enseguida se reduce el número en un orden de 10 mediante la división entera y se vuelva a iniciar el mismo proceso. Evidentemente en ese transcurso se realiza la comparación que sí el dígito actual es mayor que alguno de los que ya han sido procesados.



Ahora, para listar los pares, se hace un procedimiento similar:

1
2
3
4
5
6
7
8
9
10
11
12
13
def es_par(n):
    r = True if ((-1)**n)==1 else False
    return r
 
def pares(N):
    k = 0
    nuevo = 0
    while N > 0:
        if es_par(N%10):
            nuevo += (10**k)*(N%10)
            k += 1
        N //= 10
    return nuevo


Como se observa, la función es_par nos sirve, como debe ser, para determinar si un número es par. Luego la función pares lo que hace es ir "formando" un nuevo número a partir de los pares contenidos en el número N. Tomando en cuenta que por ejemplo, si utilizamos el número 9876, entonces el programa primero tomaría el número 6 como nuevo número, pero posteriormente cuando se llegue al 8 no podríamos concatenarlos puesto que no son Strings, entonces lo que queda es ir aumentando el orden en 10^k cada vez que encontremos un número par, así el 8 sería entonces un 80, puesto que (10^1)*(8) = 80. Bueno, en fin, un poquito de lógica matemática.




Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar