在给出函数3整数参数时返回中间值

时间:2015-05-06 09:37:01

标签: python python-2.7

此代码正在重新启动Python shell,我无法解决代码中的错误。

def middle(x,y,z):
    if x > y and x < y:
       return x
    elif y > x and y < z:
       return y
    elif z > x and z < y:
       return z
    else:
       return False

#Main Routine
middle(1,11,111)

2 个答案:

答案 0 :(得分:2)

请注意,Python可以为您进行链式比较(请参阅the docs),并且您遗漏了几种情况:

def middle(x, y, z):
    """Return the middle of the three input values."""
    if y < x < z or z < x < y:  # or min(y, z) < x < max(y, z)
       return x
    elif x < y < z or z < y < z:
       return y
    elif x < z < y or y < z < x:
       return z
    return False

使用中:

>>> middle(1, 11, 111)
11

如果要在直接运行脚本时查看结果,则必须明确这一点;作为Martijn suggested in the comments,您可以print middle(1, 11, 111)。否则,将评估结果,但实际上并未在屏幕上显示。

您还可以通过排序输入进行简化:

def middle(x, y, z):
    """Return the middle of the three input values."""
    x, y, z = sorted((x, y, z))
    return y if x < y < z else False

答案 1 :(得分:0)

我不确定你想用它做什么,但你的功能对我来说很奇怪

例如:

if x > y and x < y:

永远不会成真

此外,如果此函数旨在返回三个值的中位数,则不会执行此操作。

更像是

def middle (x, y, z):
  t = [x, y, z]
  t.sort()
  return t[1]

希望这有帮助