Para ilustrar esto tenemos dos tipos de animales, uno es cerdo y el otro es pollo. Un usuario ingresa el número de cabezas y patas para estos dos tipos particulares de animales. por ejemplo, si ejecutamos esto e ingresamos 20 cabezas y 56 patas obtenemos 12 pollos y 8 cerdos. Echa un vistazo aquí:
def solve(numLegs, numHeads): for numChicks in range(0, numHeads + 1): # how we get 12 chickens here? numPigs = numHeads - numChicks # numpigs = 20 - 12 = 8 ? totLegs = 4 * numPigs + 2* numChicks # 4 * 8 + 2 * 12 ? if totLegs == numLegs: return [numPigs, numChicks] return[None, None] def barnYard(): heads = int(raw_input('Enter number of heads:')) legs = int(raw_input('Enter number of legs:')) pigs, chickens = solve(legs, heads) if pigs = None: print 'there is no solution' else: print 'number of pigs:' , pigs pirnt 'number of chickes:', chickens
calculamos totLegs = 4 * numPigs + 2* numChicks
sabiendo que los cerdos tienen 4 patas y los pollos tienen 2 y luego verifica si esto coincide con el número de patas de entrada ¿verdad? pero en este punto la consulta es for numChicks in range(0, numHeads + 1):
¿cómo encuentra que la cantidad de pollos es 12? Si no se encuentra el número de pollos, no podemos continuar con las siguientes líneas si no estoy equivocado. ¿Puede explicar esto? esto me confunde mucho La versión de álgebra se puede encontrar aquí. enlazar
Don't make your life more complicated than it already is
, simplemente use el print command to see the intermediate values
, es simple algebra
. Por cierto, tienes many errors
en tu código y doesn't even compile
(en su mayoría, typos
como pirnt
lugar de print
). Vea aquí el fixed code which works:
def solve(numLegs, numHeads): for numChicks in range(0, numHeads + 1): #we have got 12 chickens here? print "numChicks = ", numChicks numPigs = numHeads - numChicks print "numPigs = ", numPigs totLegs = 4 * numPigs + 2* numChicks print "totLegs = ",totLegs if totLegs == numLegs: print "numLegs = ",numLegs print "numPigs = ",numPigs print "numChicks = ",numChicks return [numPigs, numChicks] return[None, None] def barnYard(): heads = int(raw_input('Enter number of heads:')) legs = int(raw_input('Enter number of legs:')) pigs, chickens = solve(legs, heads) if pigs == None: print 'there is no solution' else: print 'number of pigs:' , pigs print 'number of chicken:', chickens if __name__ == "__main__": barnYard()
SALIDA
Enter number of heads:20 Enter number of legs:56 numChicks = 0 numPigs = 20 totLegs = 80 numChicks = 1 numPigs = 19 totLegs = 78 numChicks = 2 numPigs = 18 totLegs = 76 numChicks = 3 numPigs = 17 totLegs = 74 numChicks = 4 numPigs = 16 totLegs = 72 numChicks = 5 numPigs = 15 totLegs = 70 numChicks = 6 numPigs = 14 totLegs = 68 numChicks = 7 numPigs = 13 totLegs = 66 numChicks = 8 numPigs = 12 totLegs = 64 numChicks = 9 numPigs = 11 totLegs = 62 numChicks = 10 numPigs = 10 totLegs = 60 numChicks = 11 numPigs = 9 totLegs = 58 numChicks = 12 numPigs = 8 totLegs = 56 numLegs = 56 numPigs = 8 numChicks = 12 number of pigs: 8 number of chicken: 12
Es matemática simple. You have 20 heads, 56 legs. every pigs has 4 legs, every chicken 2 legs
Asi que
56 = 4*X+2*Y X+Y=20
Lo que significa que X = 20 - Y
Entonces 56 = 4*(20-Y)+2*Y => 56 = 80 -4Y+2Y => 2Y = 80 - 56 => 2Y = 24 => Y = 12 Chicken
Entonces X + 12 = 20 => X = 8 Pigs
:RE
Espero eso ayude !!