在不使用排序的情况下查找中位数

时间:2014-01-24 03:28:07

标签: python median

我对编程很新,我在课堂上遇到问题,我们需要让用户读取三个数字,然后对它们进行排序以使用IF语句查找中位数。我们不能使用排序。我很难搞清楚这一切,并可以使用一些帮助。这是我到目前为止所做的,但我真的不知道该怎么做。

def main():
    nums = []
    x = eval(input('Enter a number: '))
    while x <= 2:
        nums.append(x)
        x = eval(input('Enter a number: '))

main()

4 个答案:

答案 0 :(得分:2)

只有三个数字?很久以前我问了similar question。列表对此并不是必需的,但如果您愿意,可以使用它。

def main():
    a = input("Enter a number: ")
    b = input("Enter a number: ")
    c = input("Enter a number: ")
    # We need to check which number is the median. With three numbers,
    # it's pretty trivial: Whichever number is greater than one or less
    # than the other.
    if c <= b <= a or a <= b <= c:
        return b
    elif c <= a <= b or b <= a <= c:
        return a
    else: # Only one option left.
        return c

答案 1 :(得分:0)

如果您只处理3个号码,则可以轻松找到中位数。

a = input("Enter a number: ")
b = input("Enter a number: ")
c = input("Enter a number: ")
x=[a,b,c]
x.remove(min(x))
median=min(x)

答案 2 :(得分:0)

这个怎么样:

def get_median(a, b, c):
    if a > b:
        if b > c:
            return b
        else:
            if a < c:
                return a
        return c
    else:
        if b < c:
            return b
        else:
            if a > c:
                return a
        return c

结果:

>>> get_median(1,2,3)
2
>>> get_median(3,2,1)
2
>>> get_median(3,3,1)
3
>>> get_median(3,1,1)
1
>>> get_median(4,6,7)
6
>>> get_median(7,6,4)
6
>>> get_median(7,6,7)
7
>>> get_median(2,2,2)
2

答案 3 :(得分:0)

只是为了好玩,使用IF语句:

from itertools import permutations
def median3(x):
    for a, b, c in permutations(x):
        if a <= b <= c:
            return b