Reto en python
Publicado por Marco (2 intervenciones) el 21/10/2020 08:29:42
Hola!
Recientemente me encontré con un reto de programación en python, pero no consigo dar con el resultado, por eso vengo a pedir ayuda, si alguien sabe como podría resolverlo me seria de mucha ayuda. el reto es:
Existe un numero entero positivo de 4 dígitos que presenta las siguientes características:
1. La suma de todos sus dígitos es 16.
2. El primero digito es un numero par.
3. El segundo digito es un numero primo.
4. El cuarto digito es la tercera parte del primer digito.
Debe organizar el algoritmo mediante funciones en donde cada una de ellas tenga una única responsabilidad.
el codigo que tengo de momento es este:
Recientemente me encontré con un reto de programación en python, pero no consigo dar con el resultado, por eso vengo a pedir ayuda, si alguien sabe como podría resolverlo me seria de mucha ayuda. el reto es:
Existe un numero entero positivo de 4 dígitos que presenta las siguientes características:
1. La suma de todos sus dígitos es 16.
2. El primero digito es un numero par.
3. El segundo digito es un numero primo.
4. El cuarto digito es la tercera parte del primer digito.
Debe organizar el algoritmo mediante funciones en donde cada una de ellas tenga una única responsabilidad.
el codigo que tengo de momento es este:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
## este esta bien
def sumarDigitos(pNum):
total = 0
while(pNum):
suma = pNum%10
pNum = pNum // 10
total = total + suma
if (total == 16):
return True
return False
# este es necesario porque se usa en extraer
def contarDigitos(pNum):
contador = 0
while(pNum != 0):
pNum = pNum //10
contador = contador +1
else:
return contador
# esta se va a usar en la funcion principal para extraer el digito que se necesite segun la instruccion
def extraer(posicion, pNum):
posContador = contarDigitos(pNum)
while (pNum != 0):
if (posContador == posicion):
return pNum % 10
pNum == pNum//10
posContador = posContador-1
return "Posicion no valida"
###########aqui ocupamos determinar la posicion 1 del numero para usarlo en la def de esPar
###########tambien la posicion 2 para saber si esPrimo
###########la posicion 4 para saber si es = a la tercera parte del digito 1
#estas 3 funciones las necesitamos en la funcion principal
def esPar(pNum):
if(pNum % 2 == 0 ):
return True
return False
def esPrimo(pNum2):
divisorInicial = 2
while (divisorInicial < pNum2):
if (pNum2 % divisorInicial == 0 ):
return False
return True
def terceraParte(pNum):
while (pNum<pNum):
if (pNum == pNum//3):
return True
return False
####ALGORITMO PRINCIPAL###
def acertijo():
pNum = 1000
while (pNum <= 9999):
if((sumarDigitos(pNum)==True) and (extraer(1, pNum)%2 == 0) and (extraer (2, pNum) and ((extraer(4, pNum ))== (extraer(1, pNum)//3))):
return pNum
pNum = pNum + 1
Valora esta pregunta


0