2017-10-04 12 views
-1

私のプライムリストファイルはCSV形式で、区切り記号はコンマで、素数は50000までです。ファイルにはランダムな改行もあります。Python max() - リストの最大要素がCSVファイルの最大要素と同じではありません

問題:49999はファイル内で最大の番号ですが、primes_listの最大要素は9973です!

[Primesの後のすべてのプライムは、longタイプに変換され、forループの値を使用します。 for prime in Primes]

私の問題は、以下の最小限のPythonコードで間違っていることです。

Pythonのバージョンは、2.76であるLinuxのミントで17

編集実行されている - のコメントの後に修正されたコードを、

import csv 

def factorise() 
    primes=[] 
    with open(primefile,'r') as csvfile: 
     primes_data=csvfile.read().replace('\n','').split(',') 
     primes=primes_data 
     print('Number of elements is: '+str(len(primes))) 
     print('First element is: '+primes[0]) 
     print('Last element is: '+primes[-1]) 
     csvfile.close() 
     print('Largest element is: '+max(primes)) 

出力例;

Number of elements is: 5134 
First element is: 2 
last element is: 49999 
Largest element is: 9973 
+1

カップル愚かなバグを修正( ' '\ nの'')を交換スプリット。( '')Primes_dataを使用していますが、素数= Prime_dataはしていません。これはあなたのコードにあるのか、それともここでの誤植ですか?複数化の違いに注意してください。また、csvfile.closeは関数であり、単にメモリ内の位置を参照しているだけです。あなたはそれを呼び出す必要があります、csvfile.close() –

+0

二重引用符で何を意味するのかよく分かりません。大文字で変数を命名するのは避けるべきです。それはクラス命名規則なので、それらの変数だけです。あなたのスニペットには多くの問題があります。私は適切なPythonの規則を実装し、あなたのタイプミスを修正します。特にこれがあなたのソースコードにある場合は、修正してください。 –

+1

が修正されました。それらの両方は、ここでタイプミスでした。まだ質問があります –

答えて

0

だから、9973の特色は何ですか?あなたはファイルを見ましたが、そこに新しい行がありますか?いずれにしても

は、どのようなあなたはおそらくしたいことは、私はので、私はこれをテストすることはできませんあなたのソースを持っていない

import csv 

def factorise(): 
    first_element = int() 
    total_list = list() 

    with open("primefile.csv", "r") as file: 
     primes = csv.reader(file) 
     for line in primes: 
      if not first_element: 
       print('First element is: %s' % line[0]) 
       first_element = line[0] 
      total_list.extend(line) 
     print('Number of elements is: %s' % len(total_list)) 
     print('Last element is: %s' % line[-1]) 

if __name__ == "__main__": 
    factorise() 

csv.reader()ではなく、標準IO.read()であるが、それはそれのように思えますうまくいくはずです。

EDIT:。)Primes_data = csvfile.read(

関連する問題