2014-11-05 8 views
1

나는라는 디렉토리 문서의 텍스트 파일 (sequencedata.txt)가있는 경우 :로 시작하는 항목의 수를 세는 것 내가 sequenceinfo라는 함수를 정의 할 방법함수의 인수로 파일을 전달

/~/documents/sequencedata.txt 

#을 위 경로의 파일에 저장하고이 숫자를 "there are * entries" 구문으로 반환합니다. 여기서 *은 계산 된 항목 수입니까? 내가 지금까지 무엇을 가지고

:

#!/usr/bin/python 
def sequenceinfo(sequencedata): 
    my_file = open("/~/documents/sequencedata.txt") 
    my_dna = my_file.read() 
    ecoliseq = my_dna.count('#') 
    return ecoliseq 

print("There are " + str(ecoliseq) + " sequences") 
+0

파일을'.readlines()'로 목록으로 읽을 수 있습니다. 그런 다음 간단한 for 루프를 사용하여 목록을 반복하고'.startswith ("#")'요소를 찾습니다. 귀하의 입력 파일에 대한 예제는 정말 도움이 될 것입니다 – Beginner

답변

3

여기에 몇 가지가 있습니다

  1. 이름 ecoliseq 함수 sequenceinfo의 외부에 표시되지 않습니다가. 결과적으로, print 행은 NameError을 발생시킵니다. 왜냐하면 파이썬은 ecoliseq을 찾을 수 없기 때문입니다. 그러나 ecoliseq이 함수에서 반환됩니다. 즉, 함수를 호출하고 그 결과를 인쇄하여 해당 값에 액세스 할 수 있습니다.

  2. sequenceinfo은 결코 사용되지 않는 인수를 취했습니다. 이 파일의 경로가되어야합니까? 나는 그것이 있다고 가정 하겠지만, 그렇지 않다면 제거해야합니다.

  3. 큰 문제는 아니지만 작업을 마친 후에도 파일을 닫지는 않습니다. 프로그램이받는 자원을 항상 관리하고 적절히 공개해야합니다. 파일을 사용하여이를 수행하는 가장 쉬운 방법은 with-statement을 사용하여 파일을 열면 자동으로 닫힙니다.

모두에서, 당신의 코드는 다음과 같이 보일 것이다 :

또한
#!/usr/bin/python 
def sequenceinfo(path): 
    with open(path) as my_file: 
     my_dna = my_file.read() 
    ecoliseq = my_dna.count('#') 
    return ecoliseq 

print("There are " + str(sequenceinfo("/~/documents/sequencedata.txt")) + " sequences") 

이 파일에 모든#의 개수가 반환 my_dna.count('#')에서 네 번째 문제가있을 수 있습니다. 그러나 귀하는 귀하의 질문에 단지 #으로 시작하는 항목 만 계산하고 싶다고 말했습니다. 이 경우이 버그를 수정해야합니다.

+0

고마워요! 그게 효과가! 너는 그 남자 야 ... 여자 ... – movietime

관련 문제