Closed fengzhihuixue closed 1 year ago
我上课重点讲过的内容:
__next__()
方法是关键的一个方法,它每次被调用必须返回一个值或者抛出 StopIteration
异常;return
语句来指定返回值,系统会自动帮你返回一个 None。所以你所说的“什么都不返回”这是做不到的。
那么问题的实质是:你为什么会希望 __next__
方法“什么都不返回”呢?这是一个错误需求导致的错误问题。
根据 __next__
方法的定义,它必须返回一个值,比如在你的例子里,它需要找到下一个素数并返回(没找到就+1继续找),而你的代码试图做的是:
self.a
是素数那么就返回 self.a
;None
)。仔细思考一下,理解这个逻辑错在哪里了么?
是分支和循环的区别嘛??
条件分支和循环只是基本的语法结构,你都要用到的,重点在于,你的算法思路是什么?
__next__()
方法的任务是返回下一个素数,这一点是无疑问的,那么我们可以写出下面的"伪代码"来整理实现思路:
def __next__(self):
# 从 n=上一个素数+1 开始检查
(1) 检查 n 是不是素数
(2) 如果 n 是素数:记住 n 的值,返回 n;
(3) 如果 n 不是素数:n = n + 1,从第(1)步重新开始
这个思路要怎么实现为 Python 代码?
我搞好啦,谢谢老师
老师,如果最后不写else:return = "",的话,就会打印出一个none 我现在迫不得已让他打印一堆空格。。 有没有什么办法能让他啥也不返回啊?