在python中查找三个数字的中间值
我试图打印三个数字的中间值,但当测试用例是数字2,1,2时,它不会给出任何结果,但当我尝试2,2,1时,它会给出正确答案,即2,那么我如何修复此代码在python中查找三个数字的中间值,python,Python,我试图打印三个数字的中间值,但当测试用例是数字2,1,2时,它不会给出任何结果,但当我尝试2,2,1时,它会给出正确答案,即2,那么我如何修复此代码 def median(a,b,c): if a>b: if a>c: if b>c: return b else: return c elif c>a: if a>b: return
def median(a,b,c):
if a>b:
if a>c:
if b>c:
return b
else:
return c
elif c>a:
if a>b:
return a
else:
return b
elif b>a:
if b>c:
if a>c:
return a
else:
return c
elif c>b:
if a>b:
return a
else:
return b
elif a==c:
return a
elif a==b:
return a
elif b==c:
return b
print(median(2,1,2))
在函数中遵循这些值:
def median(2, 1, 2):
if 2 > 1: # yes
if 2 > 2: # no
...
elif 2 > 2: # also no
...
# no 'else' here, and
... # other 'elif' choices never run
# fall out of function - implicit 'return None'
你根本不处理那个案子
程序的分支结构很难阅读,而且(很明显!)容易出错。仔细想想你想要实现的目标——有一种更简单的方法。这里有大量的问题,因此都是关于那些没有按照作者希望的方式工作的代码。用它作为标题会使你的问题毫无意义。请创建一个实际的问题标题。那么,问题是什么?如何找到中位数?为什么它不起作用?如何使其在最小更改的情况下工作@shtuff.it这不是一个重复(可能),因为问题(可能)与修复提供的代码有关,而不是如何以通用方式对任意数量的元素执行此操作@shtuff.it我只想添加一件事,就是将*args传递给方法,然后将其转换为带有
list(args)的列表
因为他似乎希望能够传入多个变量,而不是列表。这样就可以满足他的需要,但这就是我解决问题的方法。你不应该试图预测参数的顺序。你应该了解它们是如何来的,并按照你想要的顺序对它们进行排序,然后进行处理。