【问题标题】:Function to get the number of animals in python [closed]在python中获取动物数量的函数[关闭]
【发布时间】:2015-03-28 05:45:57
【问题描述】:

你好,这些函数根据这两个动物的头和腿的输入返回猪和鸡的数量。我对python真的很陌生。我无法理解它是如何工作的。你能详细解释一下吗?

def solve(numLegs, numHeads):
    for numChick in range(0, numHeads + 1):
        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

所以当我运行 barnYard 函数时,它会询问头数,所以我放了 20 个头,然后放了 56 条腿。它打印猪的数量 8 和鸡的数量 12。但我真的不明白它在这个阶段是如何达到的。特别是solve() 函数。帮助将不胜感激。

【问题讨论】:

  • 我现在就告诉你,这是一个非常慢的算法来解决这个问题,而且它可以更快地完成,实际上在 O(1) 时间内。另外,这个问题不属于 S.O.因为它的范围太广了。
  • 逐行浏览代码,用铅笔和纸写下每一步的变量值。那应该让你开始。建议您使用少量的头和腿。如果您在教程/课程/课程/mooc 中已经做到了这一点,那么您应该能够完成它。

标签: python function python-2.7


【解决方案1】:

基本上:

def solve(numLegs, numHeads):
    for numChick in range(0, numHeads + 1): #for every number in the range 0 - the number of heads + 1, numChick = that number
        numPigs = numHeads - numChicks #the number of Pigs equals the number of heads entered minus the current number
        totLegs = 4 * numPigs + 2* numChicks #the amount of legs is 4(amount of legs) * number of heads + 2(chicken legs) * the current number
        if totLegs == numLegs: if the pigs legs + the chicken legs = the total number of legs, 
           return [numPigs, numChicks] #return the number of pigs and chickens
    return[None, None] #else, return none, triggering "no solution"

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

所以:

基本上,它会一遍又一遍地运行该函数,直到计算出的边数等于输入的边数。如果它永远不等于,它只会返回 [none, none]。 (return [numPigs, numChicks] 打破 for 循环)

编辑: 我尝试在第 2 行中取出 +1,它仍然可以正常工作。

【讨论】:

  • 如果我遗漏了什么,请告诉我
  • Moris 你能解释一下吗:对于 numChick in range(0, numHeads + 1):更广泛地使用值(例如从 BarnYard 函数输入的数字)。为什么它会添加 +1?
  • @wwii 我用铅笔。但在某些时候卡住了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2019-04-17
  • 2023-04-10
相关资源
最近更新 更多