对于python中的循环行为

时间:2015-03-28 19:18:29

标签: python python-2.7

我有这两个函数根据另一个函数中的某些输入计算动物数量。我想知道这个函数的行为。如果我输入20头和56腿我最终得到8头猪和12头鸡。但有问题。

 def solve(numLegs, numHeads):
    for numChick in range(0, numHeads + 1): #we have got 12 chickens here?
        numPigs = numHeads - numChicks
        totLegs = 4 * numPigs + 2* numChicks
        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

我被困在for numChick in range(0, numHeads + 1):。如果我们得到for循环线中的数字鸡,那么我们可以继续计算猪的数量吗?但我们怎样才能得到12只鸡我上面评论的那条线?请考虑我的输入数量

3 个答案:

答案 0 :(得分:1)

for numChick in range(0, numHeads + 1)://what is this doing?

只是一个for循环,它会从0循环到numHeads + 1。如果numHeads为10,它将从0循环到10,如果numHeads为100,它将从0循环到100

请参阅python for loop函数:https://wiki.python.org/moin/ForLoop

和范围函数:https://docs.python.org/2/library/functions.html#range

e.g。

>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

每次循环时,numchick取相应的值,即numchick将从0:0,1,2,...,numHeads

开始取所有值

答案 1 :(得分:1)

对于范围内的x(y,z)将创建一个迭代(最大)y-z次的循环,并将range()生成的值赋给x。例如

for x in range( 0, 10 )

在第一次,第二次,第三次等迭代中,x将为0,1,2等

https://docs.python.org/2/library/functions.html#range range(start,stop [,step])以步进为单位从开始到停止(包括)生成编号列表。 (可以省略开始和步骤,默认为0和1)

range( 0, numHeads+1 )

将返回范围[0,numHeads + 1] 如果numHeads是5,那么

{0,1,2,3,4,5,6}

生产。

答案 2 :(得分:0)

关于range的python手册:

range(stop)
range(start, stop[, step])

这是一个多功能函数,用于创建包含算术进度的列表。它最常用于for循环。参数必须是普通整数。例如:

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(0, -10, -1)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]