我正在学习编码,而且我很难理解下面的代码是如何工作的。这段代码是一个为问题提供解决方案的功能,它有许多头和腿,你有多少只猪和鸡。评论显示,我遇到了障碍,任何人都可以帮助我解决这些障碍吗?代码工作我只是不知道如何/为什么。非常感谢!
def solve(numLegs, numHeads):
for numChicks in range(0, numHeads + 1):
numPigs = numHeads - numChicks #So this says numPigs is equal to (5,4,3,2,1,0)
totLegs = 4*numPigs + 2*numChicks #I don't understand how the math is caluclated here.
#I'd assume this is equal to 4*(5,4,3,2,1,0) + 2*(0,1,2,3,4,5). But how does that calculate?
if totLegs == numLegs: #finally here, if totLegs is equal to a list, and so are numPigs, and numChicks
#how do you get one value for each??
print (numPigs, numChicks)
return (None, None)
solve(14,5)
答案 0 :(得分:1)
所以这说numPigs等于(5,4,3,2,1,0)
不,它没有这么说。 for
循环的主体执行numHeads+1
次。在第一次执行时,numPigs
是5.在第二次执行时,它是4,依此类推。
如果totLegs等于列表
不是,它是一个数字。
答案 1 :(得分:0)
假设你有p猪和c鸡,总共有p + c头,因为每只动物有一个头和4 * p + 2 * c腿,因为每只猪有4条腿,每只小鸡有2条腿。
这会导致两个约束
在代码中:
for numChicks in range(0, numHeads + 1):
循环鸡肉数量的可能值(c)。所以numChicks依次取值1,2,3等。
numPigs = numHeads - numChicks
根据第一个约束进行计算。
totLegs = 4*numPigs + 2*numChicks
检查第二个约束是否成立
if totLegs == numLegs:
检查找到的值是否为预期值