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

Python面向对象实现Perfect Squares完美平方迭代器代码问题排查

问题排查

你写的代码存在三个核心问题:

  • 方法调用逻辑错误:get_values是你自定义的PerfectSquares类的成员方法,你却直接在Python内置列表类型的values变量上调用该方法,内置列表没有这个方法,运行会直接抛出AttributeError属性错误。
  • 未符合迭代器协议要求:题目明确要求类支持迭代器,Python迭代器协议规定迭代器类必须实现__iter__()和__next__()两个特殊方法,你当前编写的类完全不满足该要求,无法直接通过for循环遍历实例生成连续平方序列。
  • 类缺少迭代状态维护:你当前的类初始化仅接收单个数值x,没有维护迭代过程所需的当前计数变量,无法持续生成连续的平方数。
修正后实现方案

下面是符合要求的迭代器类实现,支持生成指定范围内的完美平方序列:

class PerfectSquares:
    def __init__(self, max_base):
        # max_base为平方数的最大底数,比如max_base=10就生成1到10对应的平方值
        self.current_base = 1
        self.max_base = max_base

    def __iter__(self):
        # 迭代器的__iter__方法固定返回实例本身
        return self

    def __next__(self):
        # 底数超过最大值时终止迭代
        if self.current_base > self.max_base:
            raise StopIteration
        square_val = self.current_base ** 2
        self.current_base += 1
        return square_val
使用示例

直接遍历PerfectSquares类的实例即可拿到连续完美平方值:

# 生成1到10对应的完美平方序列
for val in PerfectSquares(10):
    print(val)

运行后输出结果为:

1
4
9
16
25
36
49
64
81
100

如果需要生成无限长度的完美平方序列,删掉__next__方法里的终止判断即可,配合自定义终止条件使用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:03