neolee / wop

零基础编程思维与实践课程《欢迎进入编程世界》主站
96 stars 79 forks source link

关于函数返回值的问题 #101

Closed fengzhihuixue closed 1 year ago

fengzhihuixue commented 3 years ago

image image

老师,如果最后不写else:return = "",的话,就会打印出一个none 我现在迫不得已让他打印一堆空格。。 有没有什么办法能让他啥也不返回啊?

neolee commented 3 years ago

我上课重点讲过的内容:

所以你所说的“什么都不返回”这是做不到的。

那么问题的实质是:你为什么会希望 __next__ 方法“什么都不返回”呢?这是一个错误需求导致的错误问题。

根据 __next__ 方法的定义,它必须返回一个值,比如在你的例子里,它需要找到下一个素数并返回(没找到就+1继续找),而你的代码试图做的是:

仔细思考一下,理解这个逻辑错在哪里了么?

fengzhihuixue commented 3 years ago

是分支和循环的区别嘛??

neolee commented 3 years ago

条件分支和循环只是基本的语法结构,你都要用到的,重点在于,你的算法思路是什么?

__next__() 方法的任务是返回下一个素数,这一点是无疑问的,那么我们可以写出下面的"伪代码"来整理实现思路:

def __next__(self):
    # 从 n=上一个素数+1 开始检查

    (1) 检查 n 是不是素数
    (2) 如果 n 是素数:记住 n 的值,返回 n;
    (3) 如果 n 不是素数:n = n + 1,从第(1)步重新开始

这个思路要怎么实现为 Python 代码?

fengzhihuixue commented 3 years ago

我搞好啦,谢谢老师