Python:查找素数算法

Python:查找素数算法,python,for-loop,while-loop,Python,For Loop,While Loop,最近,我的老师对我的编码技能提出了一个挑战,因为他看到我对他所教的内容已经很了解了。问题如下 创建一个程序,提示用户输入2个数字。然后程序将显示两个给定数字之间的所有素数,包括给定的数字。注意:不能假设第一个输入大于第二个输入 所以我回答了这个问题,建立了一个相当简单的算法,运行了它,它成功了。我今天打开它是为了找出我的输出偶尔出错的原因,例如,当你输入8和29时,我得到27。我在寻找关于我的逻辑出了什么问题的提示,因为我一辈子都不知道我做错了什么。我不想直接修复,因为我想从中学到更多,并尽可能

最近,我的老师对我的编码技能提出了一个挑战,因为他看到我对他所教的内容已经很了解了。问题如下

创建一个程序,提示用户输入2个数字。然后程序将显示两个给定数字之间的所有素数,包括给定的数字。注意:不能假设第一个输入大于第二个输入

所以我回答了这个问题,建立了一个相当简单的算法,运行了它,它成功了。我今天打开它是为了找出我的输出偶尔出错的原因,例如,当你输入8和29时,我得到27。我在寻找关于我的逻辑出了什么问题的提示,因为我一辈子都不知道我做错了什么。我不想直接修复,因为我想从中学到更多,并尽可能多地自己做

numbers = [int(input("First Number")), int(input("Second Number"))]
numbers.sort()

numList = []
#Removing Even Numbers
for num in range(numbers[0],numbers[1] + 1):
    if num % 2 != 0:
        numList.append(num)

#Checking For Prime Numbers
for currNum in numList:
   #Set Start number to divide
    i = 2
    while i < currNum:
        #Checks if the currNum can be divisble by i and is a whole number
        if currNum % i != 0:
          i = i + 1
        else :
          numList.remove(currNum)
          break

print(numList)
numbers=[int(输入(“第一个数字”)),int(输入(“第二个数字”)]
number.sort()
numList=[]
#删除偶数
对于范围内的数字(数字[0],数字[1]+1):
如果数量为%2!=0:
numList.append(num)
#检查素数
对于numList中的currNum:
#设置要分割的起始编号
i=2
而我

从测试中我了解到,在for循环或while循环期间,27似乎从未被检查过,即使它在numList数组中。

从不从正在迭代的列表中删除项。 而是创建一个新列表:

numbers = [int(input("First Number")), int(input("Second Number"))]
numbers.sort()

primes = []
for num in range(numbers[0], numbers[1] + 1):
    #Set Start number to divide
    i = 2
    while i < num:
        #Checks if the currNum can be divisble by i and is a whole number
        if num % i == 0:
            break
        i += 1
    else:
        primes.append(num)

print(primes)
numbers=[int(输入(“第一个数字”)),int(输入(“第二个数字”)]
number.sort()
素数=[]
对于范围内的数字(数字[0],数字[1]+1):
#设置要分割的起始编号
i=2
而我
我希望他们在学校教自动测试。查看for循环中从不实际迭代的情况,以便
currNum==27
从不从列表中删除项,因为您正在迭代。谢谢!这有助于我理解问题所在。请问为什么从列表中删除会导致问题?我真的很想尽可能多地了解问题所在,以便从中吸取教训。