一个简单的examp上的意外结果

2024-06-28 18:51:16 发布

您现在位置:Python中文网/ 问答频道 /正文

# Barn yard example: counting heads and legs

def solve(numLegs, numHeads):
    for numChicks 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, legs):
    pigs, chickens = solve(legs, heads)
    if pigs == None:
        print "There is no solution."
    else:
        print 'Number of pigs: ', pigs
        print 'Number of Chickens: ', chickens

barnYard(20,56)

我认为预期结果是8和12,但它返回“没有解决方案”。我做错什么了?你知道吗

我只是刚开始编程,所以请友善点。。。:)


Tags: nonereturnifdefprintheadssolvelegs
2条回答

solve()中,return语句缩进到for循环中。退后一级,它应该工作得很好。你知道吗

def solve(numLegs, numHeads):
    for numChicks in range(0, numHeads + 1):
        numPigs = numHeads - numChicks
        totLegs = 4*numPigs + 2*numChicks
        if totLegs == numLegs:
                return [numPigs, numChicks]
    return [None, None]

看看你的压痕。return [None, None]在循环内。它在第一次迭代后返回[None, None]

相关问题 更多 >