Von Aschr 2022-01-10 11:49 采纳率: 100%
浏览 32
已结题

运行aver=sum(x)/len(x)一直报错TypeError,x是个列表,如何解决?(语言-python)

目的是输入一个列表x后,如果x中全为数字,则输出大于其平均值的数的平方,如果不全是数字就输出列表中长度大于2的元素

问题相关代码
class mf:
    def myaver(x):
        y =[]
        aver = sum(x)/len(x)
        for i in x:
            if i >= aver:
                y.append(i)
        x = y        
            


    def is_number(x):
        try:
            float(x)
            return True
        except ValueError:
            pass
        try:
            import unicodedata
            unicodedata.numeric(s)
            return True
        except (TypeError,ValueError):
            pass
        return False


def af(x):
    '''
    x is a list
    '''
    flag = True
    for i in x:
        if mf.is_number(i) == True:
            pass
        else:
            flag = False
    if flag == True:
        y = list(filter(mf.myaver,x))
        z = list(map(y**2,y))
        print(z)
    else:
        print(list(filter(lambda i:len(i)>=2,x)))
运行结果及报错内容
aver = sum(x)/len(x)
TypeError: 'int' object is not iterable
  • 写回答

1条回答 默认 最新

  • user-from-future 2022-01-10 12:44
    关注
    class mf:
        def myaver(x):
        def is_number(x):
    

    你开头定义了类建议加上@staticmethod静态方法装饰器。
    然后你 myaver(x) 这个函数传入值 x 是一个 int 类型的,sum()只能接受一个可迭代对象,而 int 不属于可迭代对象,所以你要看看你代码逻辑哪里有问题~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 爬取豆瓣电影相关处理
  • ¥15 手机淘宝抓清除消息接口
  • ¥15 C#无selenium
  • ¥15 LD衰减计算的结果过大
  • ¥15 用机器学习方法帮助保险公司预测哪些是欺诈行为
  • ¥15 计算300m以内的LD衰减
  • ¥15 数据爬取,python
  • ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
  • ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
  • ¥15 FOR循环语句显示查询超过300S错误怎么办