Python命令处理器-我的代码中的问题?

Python命令处理器-我的代码中的问题?,python,function,Python,Function,我正在编写一个程序,其中包含一个函数,用于检查一个数字是否为素数——如果为素数,则将其添加到特定列表中,然后使用pickle模块将其保存为文件。再次调用该函数时,它会打开列表(使用pickle),然后检查该数字是否在列表中。如果是,它就是一个素数,如果不是,它会使用一种非常基本的技术检查它是否是一个素数 这是我的密码: ''' List of functions: _isPrime(n)_ : checks if n is a prime number _remove(n)_ : removes

我正在编写一个程序,其中包含一个函数,用于检查一个数字是否为素数——如果为素数,则将其添加到特定列表中,然后使用
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()
“”
功能列表:
_isPrime(n):检查n是否为素数
_删除(n)\从正在运行的素数列表中删除n并更新pkl文件
_prevPrimes(n)\生成最多n个素数的列表
_视图()\导入和打印pList
_delete()\删除所有pList
'''
def iPrime(n):
进口泡菜
从数学导入sqrt
pList=pickle.load(open('primes.pkl','rb'))
x=2
如果(类型(n)!=int)和(类型(n)!=long):
print“N不是整数。”
返回错误
如果pList中有n:
打印“%d”是一个素数。“%(n)
返回真值
其他:
而(sqrt(n)>=x):
如果((n%x)!=0):
x=x+1
如果(sqrt(n)(y您已经发现如何正确导入函数:

从primenum导入iPrime

或参考全名:

import primenum
primenum.isPrime(5)
您需要使用完整路径来存储pickle文件;否则python将仅在本地目录中查找该文件。可能将其存储在主目录中:

import os.path

HOME_DIR = os.path.expanduser('~')
然后稍后使用以下命令打开文件:

open(os.path.join(HOME_DIR, 'primes.pkl')

因此,您可以通过按照Python导入的工作方式实际导入函数来运行该函数。那么,您在第一部分中的具体要求是什么?您可以从终端复制文本并将其粘贴到编辑器中。使用编辑器工具栏上的
{}
按钮(选择代码)要正确格式化它。这里不需要使用这么多屏幕截图,它都是文本。此外,我们通常谈论Python交互式shell而不是Python命令处理器。如何从终端复制文本?据我所知,没有选项可以这样做。@F3AR3DLEGEND:format?它是UNIX上“主目录”的符号,但它可以工作在Windows上也一样,IIRC。这不起作用,因为我需要能够读取文件上的列表并对其进行编辑——因此我使用了
pickle
。我需要另一种方法,仍然使用
pickle
@F3AR3DLEGEND:为什么不起作用呢?您不能再次加载列表,不能向列表中添加新项目,或者无法编写新的pickle file?我需要能够将项目附加到列表中,并且能够从列表中读取项目…@F3AR3DLENGDE:如果您的代码有新问题,请发布一个新问题,如果您有错误,请使用回溯。如果可能,请使用文本,而不是屏幕截图。