缩进错误python

2024-04-25 23:31:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定我的代码出了什么问题。我试图写一个程序,找到一个数字的素分解,并通过数字迭代。我的密码是

import math 
import time

def primfacfind(n1,n2):
    while n1 < n2:
        n = n1
        primfac=[]

        time_start = time.clock()

        def primes(n):
            sieve = [True] * n
            for i in xrange(3,int(n**0.5)+1,2):
                if sieve[i]:
                    sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1)
            return [2] + [i for i in xrange(3,n,2) if sieve[i]]

        print primes(n)

        def factfind(lsp,n): #finds factors of n among primes
            for i in lsp:
                if n%i==0:
                    primfac.append(i)
                else:
                    i+=1

        factfind(primes(n),n)
        print primfac

        def simplify(lsp):
            for i in lsp:
                if lsp.count(i) > 1:
                    i+=1 #should simplify to 3^2 instead of 3,3; unfinished

        time_end = time.clock()
        time_elapsed = time_end - time_start
        print time_elapsed

        n1+=1

print primfacfind(6,15)

给出的误差为

Traceback (most recent call last):
  File "python", line 15
    sieve = [True] * n
        ^
IndentationError: expected an indented block

我一次又一次地检查我的压痕,我不确定是什么地方出了问题。当程序不在整个函数和while循环中时,它就工作了,但我不认为这会有什么不同。如果答案代码尽可能简单易懂,那将不胜感激,因为我对python有些陌生。你知道吗

如有任何帮助,我们将不胜感激。谢谢!你知道吗


Tags: 代码inimport程序foriftimedef
2条回答

我把代码放在我的编辑器里,编译得很好。所以我去了第12行,在那里你有sieve = [True] * n,去掉了缩进,所以缩进和上面的行一样def primes(n):,我可以重现你的错误。你知道吗

也许试着添加一个比你想象的更多的缩进。如果你想找一个不同的编辑,你也可以去大学免费试用。你知道吗

下载类似Sublime的内容并突出显示代码。空格将是点,制表符将是破折号。你知道吗

相关问题 更多 >