我有这两个函数根据另一个函数中的某些输入计算动物数量。我想知道这个函数的行为。如果我输入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只鸡我上面评论的那条线?请考虑我的输入数量
答案 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)
[]