How to find the median among three given numbers in Python

3 Answers

0 votes
# Method 1: Using sorted()

def median_of_three_numbers(a, b, c):
    return sorted([a, b, c])[1]


print("The median of [1, 1, 1] is %d" % median_of_three_numbers(1, 1, 1))
print("The median of [10, 3, 7] is %d" % median_of_three_numbers(10, 3, 7))
print("The median of [10,-10,-10] is %d" % median_of_three_numbers(10, -10, -10))
print("The median of [3, 3, 5] is %d" % median_of_three_numbers(3, 3, 5))


'''
run:

The median of [1, 1, 1] is 1
The median of [10, 3, 7] is 7
The median of [10,-10,-10] is -10
The median of [3, 3, 5] is 3

'''

 



answered Mar 26 by avibootz
edited Mar 26 by avibootz
0 votes
# Method 2: Without sorting

def is_median(x, y, z):
	# if x is median return true
	if x <= b and x >= z or x >= y and x <= z:
		return True
	else:
		return False

def median_of_three_numbers(a, b, c):
	if is_median(a, b, c):
		return a
	if is_median(b, c, a):
		return b
	else:
		return c


print("The median of [1, 1, 1] is %d" % median_of_three_numbers(1, 1, 1))
print("The median of [10, 3, 7] is %d" % median_of_three_numbers(10, 3, 7))
print("The median of [10,-10,-10] is %d" % median_of_three_numbers(10, -10, -10))
print("The median of [3, 3, 5] is %d" % median_of_three_numbers(3, 3, 5))


'''
run:

The median of [1, 1, 1] is 1
The median of [10, 3, 7] is 7
The median of [10,-10,-10] is -10
The median of [3, 3, 5] is 3

'''

 



answered Mar 26 by avibootz
edited Mar 26 by avibootz
0 votes
# Method 3: One‑liner

def median_of_three_numbers(a, b, c):
    return a + b + c - min(a, b, c) - max(a, b, c)


print("The median of [1, 1, 1] is %d" % median_of_three_numbers(1, 1, 1))
print("The median of [10, 3, 7] is %d" % median_of_three_numbers(10, 3, 7))
print("The median of [10,-10,-10] is %d" % median_of_three_numbers(10, -10, -10))
print("The median of [3, 3, 5] is %d" % median_of_three_numbers(3, 3, 5))


'''
run:

The median of [1, 1, 1] is 1
The median of [10, 3, 7] is 7
The median of [10,-10,-10] is -10
The median of [3, 3, 5] is 3

'''

 



answered Mar 26 by avibootz
...