Python操作顺序

时间:2015-08-02 20:12:14

标签: python loops for-loop range

我正在学习编码,而且我很难理解下面的代码是如何工作的。这段代码是一个为问题提供解决方案的功能,它有许多头和腿,你有多少只猪和鸡。评论显示,我遇到了障碍,任何人都可以帮助我解决这些障碍吗?代码工作我只是不知道如何/为什么。非常感谢!

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)

2 个答案:

答案 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条腿。

这会导致两个约束

  1. heads = p + c
  2. leg = 4 * p + 2 * c
  3. 在代码中:

    for numChicks in range(0, numHeads + 1):
    

    循环鸡肉数量的可能值(c)。所以numChicks依次取值1,2,3等。

    numPigs = numHeads - numChicks
    

    根据第一个约束进行计算。

    totLegs = 4*numPigs + 2*numChicks
    

    检查第二个约束是否成立

    if totLegs == numLegs:
    

    检查找到的值是否为预期值