所以我的指示如下:
当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 )
答案 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,但似乎你保证不是这样,而且,在开始时很容易检查。