Python for循环保持为0

时间:2019-03-21 07:59:11

标签: python for-loop

我写了一个小代码,应该从txt文件中读取素数列表,并应该生成下一个。 为了检查我的数字是否为素数,我尝试对已经生成的列表中的每个素数进行除法。 但是,我的for循环保持为0,我不知道为什么。 这是我的代码:

primes = open("Primes1.txt").read().split()

primelist = []
for i in primes:
    primelist.append(i)
    print(primelist)

n = int(primelist[len(primelist) - 1]) + 1

print(n)

while n < 100 :
    n_prime = 1
    for i in range (len(primelist)) :
        print(i)
        if n % int(primelist[i]) == 0:
            n_prime = 0
            break
    if (n_prime == 1) :
        primelist.append(str(n))
        print(primelist)
        open("Primes1.txt", "a").write("\n" + str(n))
    n = n + 2

2 个答案:

答案 0 :(得分:3)

您需要先遍历文本文件的每一行,然后再读取每一行。然后,您可以将每个素数附加到新列表中。 (如果每个数字都换行),例如:

如果素数换行:

primeFile = open("Primes1.txt", "r")
primeList = []

for prime in primeFile:
    primeList.append(prime)

如果所有质数都在一行中,并以一个空格(“”)分隔:

 primeFile = open("Primes1.txt", "r")
    primeList = []

    for line in primeFile:
        primesInLine = line.split()
        for prime in primesInLine:
            primeList.append(prime)

这两种方法都可以解决问题

答案 1 :(得分:0)

发现了问题。我的Primes1.txt文件具有以下数字:2,3,5,7

在这一行上:n = int(primelist [len(primelist)-1])+ 1,n设置为8

从这一点开始,由于我的n = n + 2,每个n都可以被2(索引0)整除