急!python基础题,求助

题目的要求是用函数得到一个列表的中间数,如果列表长度为偶则取中间两数的平均值。代码如下:defmedian(lists):m=len(lists)lists=sorted... 题目的要求是用函数得到一个列表的中间数,如果列表长度为偶则取中间两数的平均值。
代码如下:
def median(lists):
m = len(lists)
lists = sorted(lists)
if m % 2 == 1:
return lists[(m - 1) / 2]
else:
return (lists[m / 2] + lists[n / 2 - 1]) / 2.0
lists = input('Please enter a list:')
print(median(lists))
却报错TypeError,求大神解答。
展开
 我来答
尹卓群
2017-07-29 · TA获得超过665个赞
知道小有建树答主
回答量:370
采纳率:75%
帮助的人:82.2万
展开全部
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'yinzhuoqun'

mylist1 = [x for x in range(1,10)] # 1-9
mylist2 = [x for x in range(1,11)] # 1-10


def middle_num_from_list(mylist):
    if isinstance(mylist, list):
        mylist_len = len(mylist)
        # 没判断列表是否为全数字
        if mylist_len % 2 == 0: # 偶数个列表
            middle_num = (mylist[int(mylist_len/2)] + mylist[int(mylist_len/2)-1])/2
            print("%s \n的中间平均数是:%s" % (mylist, middle_num))
        elif mylist_len % 2 == 1:
            middle_num = mylist[round(mylist_len/2)]
            print("%s \n的中间平均数是:%s" % (mylist, middle_num))
        else:
            print("非法列表")
         
if __name__ == "__main__":
    middle_num_from_list(mylist1)
    middle_num_from_list(mylist2)
    
    
    
# 结果

# [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 的中间平均数是:5
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 的中间平均数是:5.5
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式