2016-10-07 16 views
0

私のコードに何が問題なのかよくわかりません。私は、数値の素因数分解を発見し、数値を反復するプログラムを書くことを試みています。私のコードは、指定されたエラーが、私は何度も何度も私のインデントの上にチェックしましたインデントエラー - python

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

ある

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) 

ある、と私は間違っているものにのようにわからないと思います。このプログラムは、全体的な機能とwhileループでは機能しませんでしたが、どのように違いが見られるのか分かりませんでした。私がPythonに若干新しいので、回答コードができるだけ単純なものであったことは理解できます。

このエラーの助けに感謝します。ありがとう!

+5

スペースとタブを混ぜている可能性が最も高いです。 –

+0

@MosesKoledoyeを修正できるテキストエディタを入手してください。私はrepl.itをオンラインコンパイラを使用しています。私はタブキーを打っています... – heather

+0

どこかに間違ったスペースがあるかもしれません。それは伝えにくいです。あなたのコンピュータ上で単にpythonを使う方法はありますか?テキスト編集者はミツバチです。また、他の関数の内部で関数を定義したい場合もありますが、この場合は外部で定義する必要があります。インデントの問題にも役立つかもしれません。 –

答えて

2

Sublimeのようなものをダウンロードし、コードを強調してください。スペースは点になり、タブはダッシュで表示されます。

-1

私はそのコードをエディタに入れて、うまくコンパイルしました。だから私はsieve = [True] * nを持っている行12に行ってインデントを取り除いたので、それは上の行と同じインデントされていたので、エラー番号def primes(n):を再作成できました。

おそらく、あなたが考えるよりもインデントを追加してみてください。別のエディタが必要な場合は、大学に行くと無料でEnthought Canopyを試すこともできます。

+0

私はEnthought Canopyに対してアドバイスをしていますが、かなり重いので、統計データの解析タイプのものを実際に行う必要がない限り、私は助言します。これはもっとイントロ - パイソンのように見えます。テキストエディタとコマンドラインはあなたが必要とするすべてのもので、初心者がとにかくそのことを学ぶのは良いことです。 –

関連する問題