2017-10-04 2 views
-1

내 프라임 목록 파일은 CSV 형식이며 구분 기호는 쉼표이며 소수점 이하 50000 자까지의 데이터가 있습니다.이 파일에는 임의의 줄 바꿈 .목록의 가장 큰 요소가 CSV 파일에서 가장 큰 것과 같습니다.

문제 : 49999는 파일에서 가장 큰 번호이지만 primes_list의 최대 요소는 9973입니다!

[나중에 Primes의 모든 소수는 long 유형으로 변환되고 for 루프의 값을 사용합니다. for prime in Primes]

내 문제는 아래의 최소한의 파이썬 코드로 잘못하고있는 것입니다.

파이썬 버전은 2.76이다 리눅스 민트에 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

Primes_data = csvfile.read 고정() (', '\ n')를 대체 ('') Primes_data하지만 소수 = Prime_data은하지 않습니다 사용합니다. 이 코드가 사용자의 코드 또는 여기 오타에 있습니까? 다원화의 차이점에 유의하십시오. 또한 csvfile.close는 함수이고 단순히 메모리의 위치에 대한 참조를 작성하는 것입니다. csvfile.close()를 호출해야합니다. –

+0

큰 따옴표로 무엇을 의미하는지 확실하지 않습니다. 대문자 사용하여 변수의 이름을 지정하지 않아야합니다. 클래스 이름 지정 규칙이므로 이러한 변수 만 사용하십시오. 스 니펫에 많은 문제가 있습니다. 필자는 적절한 Python 규칙을 구현하고 오타를 수정합니다. 특히 이것이 소스 코드에있는 경우에 특히 그렇습니다. –

+1

수정 됨. 둘 다 오타 였어. Question still still –

답변

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()이지만, 그것을 것 같다 작동해야합니다.

편집이 :. '. 분할은 부부 바보 버그