숫자가 소수인지 검사하는 함수를 포함하는 프로그램을 작성 중입니다.있는 경우 숫자를 특정 목록에 추가 한 다음 pickle
모듈을 사용하여 파일로 저장합니다. 함수가 다시 호출되면 목록 (pickle
사용)이 열리고 목록에 번호가 있는지 확인합니다. 그것이 있다면, 그것은 소수입니다, 그렇지 않다면, 그것은 아주 기본적인 기술을 사용하여 소수인지 확인합니다.파이썬 커맨드 프로세서 - 내 코드에 문제가 있습니까?
'''
List of functions:
_isPrime(n)_ : checks if n is a prime number
_remove(n)_ : removes n from the running list of primes and updates the pkl file
_prevPrimes(n)_ : generates a list of primes up to n
_view()_ : imports and prints pList
_delete()_ : deletes all of pList
'''
def isPrime(n):
import pickle
from math import sqrt
pList = pickle.load(open('primes.pkl', 'rb'))
x=2
if (type(n) != int) and (type(n) != long):
print "N is not an integer."
return False
if n in pList:
print "%d is a prime number." % (n)
return True
else:
while (sqrt(n) >= x):
if ((n%x) != 0):
x = x + 1
if (sqrt(n) < x):
pList.append(n)
pList = sorted(pList)
pickle.dump(pList, open('primes.pkl', 'wb'))
print "%d is a prime number." % (n)
return True
if ((n%x)==0):
print "%d is not a prime number." % (n)
return False
pList = sorted(pList)
pickle.dump(pList, open('primes.pkl', 'wb'))
# NEW FUNCTION
def prevPrimes(n):
from time import clock
startTime= clock()
import pickle
from math import sqrt
pList = pickle.load(open('primes.pkl', 'rb'))
z = abs((max(pList)) - n)
y= max(pList)
if (z==0):
print "Done"
while (y <= n):
pList = pickle.load(open('primes.pkl', 'rb'))
if isPrime(y):
if y not in pList:
pList.append(y)
y= y + 1
pList = sorted(pList)
pickle.dump(pList, open('primes.pkl', 'wb'))
print startTime
# NEW FUNCTION
def remove(n):
import pickle
pList = pickle.load(open('primes.pkl', 'rb'))
view()
pList.remove(n)
pickle.dump(pList, open('primes.pkl', 'wb'))
view()
# NEW FUNCTION
def view():
import pickle
pList = pickle.load(open('primes.pkl', 'rb'))
print pList
# NEW FUNCTION
def delete():
import pickle
pList = [2, 3, 5]
pickle.dump(pList, open('primes.pkl', 'wb'))
view()
그것은 파이썬 쉘에서 잘 작동 :
여기 내 코드입니다.
오류는 함수가 실제로 호출하는 경우 발생합니다. 나는 from primenum import isPrime
을 해 이것을 수행했다. 그러나, 그것은 ... 여기 사진입니다 (pickle
포함) I/O와 오류를 가져옵니다 당신이 볼 수 있듯이, primes.pkl
파일이 분명히 존재
.
어떻게 수정합니까? primenum 수입 isPrime에서
을
또는 전체 이름을 참조하십시오 : 당신이 필요로하는
import primenum
primenum.isPrime(5)
이미 올바르게 기능을 가져 오는 방법을 발견 제안 :
을, 당신이 * 실제로 방식 파이썬 수입에 따라을 가져, 기능을 실행할 수 *있다 작업. 첫 번째 부분에서 정확히 무엇을 묻고 있습니까? –
터미널에서 텍스트를 복사하여 여기에 편집기에 붙여 넣을 수 있습니다. 편집기 툴바에서 코드를 선택하여'{}'버튼을 사용하여 올바르게 포맷하십시오. 여기에 너무 많은 스크린 샷을 사용할 필요가 없습니다. 모든 텍스트입니다. –
또한 파이썬 명령 프로세서 대신 파이썬 대화 형 셸에 대해서도 이야기합니다. –