急!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,求大神解答。 展开
代码如下:
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,求大神解答。 展开
1个回答
展开全部
#!/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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询