未能通过隐藏测试,无法找到缺陷

时间:2017-03-18 15:43:38

标签: python algorithm loops

所以我的指示如下:

当x和y是整数时,我们感兴趣的是z的值。编写一个函数poly2max(a, b, c d),它接受​​指定x和y的最小值和最大值的参数。它应返回从这些范围中选择的任何x和y的最大值z。例如,评估poly2max(0,5,3,7)将搜索x的值从0到5(包括0和5),使用y从3到7(包括3和7)的值来查找此多项式函数&# 39; s最大的价值。

我的代码正在通过每次公开测试和几乎所有隐藏的测试,但是我无法找到一个缺陷。

这是我的代码:

def poly2max ( a, b, c, d ):

results = []

for x in range( a, b ):
    for y in range ( c, d ):

        z = (-x**4 + 3*x**2 - y**4 + 5*y**2)
        results.append( z )

if a == b:
    if c == d:
        x = a
        y = c
        z = (-x**4 + 3*x**2 - y**4 + 5*y**2) 
    return z

if (a, b, c, d ) == (0, 0, 0, 0):
    return 0

if a == b:
    for y in range ( c, d ):
        x = a
        z = (-x**4 + 3*x**2 - y**4 + 5*y**2)
        results.append( z )
    return max( results )

if c == d:
    for x in range( a, b ):
        y = c
        z = (-x**4 + 3*x**2 - y**4 + 5*y**2)
        results.append( z ) 
    return max( results )

else:
    return max( results )

1 个答案:

答案 0 :(得分:2)

如果你想要a到b的所有值,包括a和b,你应该使用范围(a,b + 1)。

此外,您的代码比必要的更复杂。这应该这样做:

def poly2max ( a, b, c, d ):
    results = []
    for x in range( a, b+1 ):
        for y in range ( c, d+1 ):
            z = (-x**4 + 3*x**2 - y**4 + 5*y**2)
            results.append( z )
    return max( results )

我能看到的唯一问题是如果b< a或d< c,但似乎你保证不是这样,而且,在开始时很容易检查。