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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵