You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python 3面向对象编程计算最大值,报错'int' object is not iterable

问题错误原因
  • 第一处错误在for i in n语句:n是输入后转换的整数类型,Python不支持直接遍历整数,所以抛出'int' object is not iterable错误,需要改成遍历range(n)来实现循环n次的逻辑。
  • 第二处是逻辑设计问题:你仅初始化了1个student类实例,每次循环都会覆盖之前存储的姓名和gpa值;同时self.gpa存储的是单个整数,调用max()方法时需要传入可迭代对象,也会触发同类报错。

错误截图如下:
错误

结合列表与面向对象的实现方案

如果你要实现的是「录入n个学生的信息,输出所有学生中的最高gpa」,可以参考如下修改后的代码:

class Student:
    # 用构造方法初始化每个实例的属性,不要用类属性存储单例值
    def __init__(self, name, gpa):
        self.name = name
        self.gpa = gpa

def count_max_gpa(student_list):
    # 从学生列表中提取所有gpa,取最大值
    all_gpa = [stu.gpa for stu in student_list]
    return max(all_gpa)

def main():
    student_list = []
    n = int(input("n: "))
    # 遍历range(n)实现循环n次
    for _ in range(n):
        # 如果name是学号可以改成int(input)
        name = input("请输入学生姓名: ")
        gpa = float(input("请输入学生gpa: "))
        # 每次循环新建一个Student实例,存入列表
        student_list.append(Student(name, gpa))
    max_gpa = count_max_gpa(student_list)
    print(f"最高gpa为: {max_gpa}")

if __name__ == "__main__":
    main()
代码说明
  • 定义Student类时使用构造方法__init__,每个学生对应一个独立的类实例,属性互不干扰
  • 用列表student_list存储所有创建好的学生实例,实现多数据的批量管理
  • 取最高gpa时先从列表中提取所有学生的gpa值组成新的可迭代列表,再调用max()方法计算

内容的提问来源于stack exchange,提问作者tinymermaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:36:02