此代码正在重新启动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)
答案 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]
希望这有帮助