【发布时间】:2020-11-30 15:49:30
【问题描述】:
所以我们的想法是创建一个函数来返回任意两个数字(包括)之间的所有素数。 下面,我把我写对的函数和我写错的函数放在一起。
我犯的错误是“else”语句的缩进。但我不知道为什么一个是正确的,另一个是不正确的!
我也很好奇我从不正确的函数得到的输出,它主要显示素数的重复,但偶尔会抛出一个不是素数的数字,而是一个可被 3 整除的数字和另一个素数数字。我一直在试图弄清楚这个函数是如何产生这个结果的(所以我可以理解这个错误),但我很难过!
任何帮助将不胜感激
##This is the correct version: ##########################
def primefinder(start, end):
primes = []
for number in range(start, end +1):
if number > 1:
for i in range(2, number):
if number % i == 0:
break
else:
primes.append(number)
return primes
## This is the incorrect version:##############
def primefinder(start, end):
primes = []
for number in range(start, end +1):
if number > 1:
for i in range(2, number):
if number % i == 0:
break
else: ##<--This is my mistake##
primes.append(number)
return primes
【问题讨论】:
-
我强烈建议在图形调试器中打开您的程序,并在查看局部变量值列表(
i、number等)的同时单步执行它。一个常见的免费选择是使用 PyCharm,但它绝不是唯一的。学习使用调试器是一项重要的技能,当您开始处理太长而无法适应 StackOverflow 问题的程序时,它将为您提供很好的帮助。
标签: python function loops primes