Python - MayorSumaDigitos(n1, n2)

 
Vista:
sin imagen de perfil

MayorSumaDigitos(n1, n2)

Publicado por Jorge (4 intervenciones) el 19/09/2017 00:13:56
Amigos me pueden ayudar con esto en Phyton?
la función recibe 2 enteros n1 y n2
como parámetro. Debe retornar el número cuya suma de sus dígitos
es mayor. Si la suma de los dígitos es igual, debe retornar 0.

saludos.
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
sin imagen de perfil
Val: 156
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

MayorSumaDigitos(n1, n2)

Publicado por Andrés (55 intervenciones) el 19/09/2017 01:26:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/python3
 
import unittest
 
#suma los digitos de un numero
def suma_digitos(numero):
    suma = 0
    while numero:
        numero, digito = divmod(numero, 10)
        suma += digito
    return suma
 
#numero cuya suma de digitos es mayor
def mayor_suma_digitos(numero1, numero2):
    suma1 = suma_digitos(numero1)
    suma2 = suma_digitos(numero2)
    if suma1 == suma2:
        return 0
    elif suma1 > suma2:
        return numero1
    else:
        return numero2
 
class MyTest(unittest.TestCase):
 
    def test(self):
        self.assertEqual(mayor_suma_digitos(19,91) ,0)
        self.assertEqual(mayor_suma_digitos(191,185) ,185)
        self.assertEqual(mayor_suma_digitos(2250,541) ,541)
 
if __name__ == '__main__':
    myTest=MyTest()
    myTest.test()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

MayorSumaDigitos(n1, n2)

Publicado por kip (257 intervenciones) el 19/09/2017 01:35:55
Hola, algo simple puede ser:

1
2
3
4
5
def mayorSumaDigitos(n1, n2):
    s1, s2 = sum(map(int, str(n1))), sum(map(int, str(n2)))
    return (s1 > s2 and n1) or (s1 < s2 and n1) or 0
 
print(mayorSumaDigitos(31, 21)) # mostrara 31

Una version mas larga podria ser:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def mayorSumaDigitos(n1, n2):
    sum1 = sum2 = 0
    for n in str(n1):
        sum1 += int(n)
    for n in str(n2):
        sum2 += int(n)
    if sum1 > sum2:
        return n1
    elif sum1 < sum2:
        return n2
    else:
        return 0
 
print mayorSumaDigitos(23, 23) # mostrara 0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar