Python contando el número de ganado

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 !!