风沙度 发表于 2020-8-17 13:05:23

代码求助

def is_prime(number):
    if number > 1:
      if number == 2:
            return True
      if number % 2 == 0:
            return False
      for current in range(3, int(math.sqrt(number) + 1), 2):
            if number % current == 0:
                return False
      return True
    return False
为什么要写入最后两行代码呀?

永恒的蓝色梦想 发表于 2020-8-17 13:13:44

防止不返回。

sunrise085 发表于 2020-8-17 13:13:54

帮你写了注释,分析程序,注意缩进,查看哪个return属于哪个层次。其实很简单的
def is_prime(number):
    if number > 1:
      if number == 2:
            return True #这里不必说,若number为2,肯定是质数,返回True
      if number % 2 == 0:
            return False #这里也不必多说,若number为2的倍数,肯定不是质数,返回False
      for current in range(3, int(math.sqrt(number) + 1), 2):
            if number % current == 0:
                return False #在for循环过程中,若number有其他的约数,则number不是质数,返回False
      return True #若直到for循环结束,都没有return,说明number没有其他的约数,则number是质数,返回True
    return False #这一句与第二行的 if 缩进相同,当number>1不成立的时候,返回False

风沙度 发表于 2020-8-17 13:20:58

sunrise085 发表于 2020-8-17 13:13
帮你写了注释,分析程序,注意缩进,查看哪个return属于哪个层次。其实很简单的

最后一行为什么是number>1不成立的话,返回False呀,第二行的if也没有对应的else呀

sunrise085 发表于 2020-8-17 13:38:47

风沙度 发表于 2020-8-17 13:20
最后一行为什么是number>1不成立的话,返回False呀,第二行的if也没有对应的else呀

因为如number>1成立的话,进入if语句块,就一定会遇到return,那就不可能会执行到最后一句了。

风沙度 发表于 2020-8-17 13:44:52

sunrise085 发表于 2020-8-17 13:38
因为如number>1成立的话,进入if语句块,就一定会遇到return,那就不可能会执行到最后一句了。

啊,明白了,谢谢你
页: [1]
查看完整版本: 代码求助