n 个串列资料,串列资料开头为一整数 m ,此 m 值表示有几个整数。再将资料由小到大排列取中间值

请实作一程式,此程式可以不断地要求使用者输入一组资料,每一组资料一开头代表接下来要输入 n 个串列资料,当所输入的 n 小于等于 0 时则程式结束。每个串列资料一开头为一整数 m ,此 m 值代表接下来有几个整数。当每组资料输入后,求出每个串列资料中的中间值,最后并把每个串列资料的中间值由小到大排序并输出。
在此注意到的是,在取中间值部分,假设输入的资料数目为N,当N为奇数时,则中间值为将输入资料由小到大排列取第(N+1)/2 个数字,若N为偶数时,则中间值为将输入资料由小到大排列取第N/2 个数字。

举例:当有3笔资料,分别为 6 2 5时
将此3笔资料排序的结果为2 5 6,又因(3+1)/2 = 2,因此取排列好的第2个数字,即5
举例:当有4笔资料,分别为 6 2 5 1时
将此4笔资料排序的结果为1 2 5 6,又因4/2 = 2,因此取排列好的第2个数字,即2
输入资料:
2
5 1 5 7 9 10
4 6 8 9 11
2
5 8 10 11 12 14
5 1 3 5 7 9
0
输出结果:
7 8
5 11

 

import math
while True:
    m = int(input())
    if m == 0:
        break
    result = []
    for i in range(m):
        listN = list(map(int, input().split(" ")))
        listN = sorted(listN[1:])
        result.append(listN[math.ceil(len(listN)/2-1)])
    print(" ".join(map(str,sorted(result))))

为啥5 8 10 11 12 14的中间值是11