Python 函数给我错误;认为输入是非类型的

Python 函数给我错误;认为输入是非类型的,python,python-3.x,Python,Python 3.x,我正试图编写一段代码来确定小于1000的最大素数回文,但收到一条错误消息,我真的不知道如何修复:错误消息如下: Traceback (most recent call last): File "/Users/sebpole/Documents/EvalPrimePallindrome.py", line 43, in <module> if GPF(c) == c: File "/Users/sebpole/Documents/EvalPrimePallind

我正试图编写一段代码来确定小于1000的最大素数回文,但收到一条错误消息,我真的不知道如何修复:错误消息如下:

Traceback (most recent call last):
  File "/Users/sebpole/Documents/EvalPrimePallindrome.py", line 43, in     <module>
    if GPF(c) == c:
  File "/Users/sebpole/Documents/EvalPrimePallindrome.py", line 37, in GPF
    la = fac(int(la))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
回溯(最近一次呼叫最后一次):
文件“/Users/sebbole/Documents/EvalPrimePallindrome.py”,第43行,在
如果GPF(c)=c:
文件“/Users/sebbole/Documents/EvalPrimePallindrome.py”,第37行,GPF格式
la=fac(整数(la))
TypeError:int()参数必须是字符串、类似字节的对象或数字,而不是“NoneType”
我相信这意味着在我的程序的某个点上,一个整数被转换成非整数,然后插入一个需要整数的函数?但我不太确定发生在哪里……代码如下:

#Find the largest prime palindrome less than 1000
primePalis = []
def isolate(x, y):
    x = str(x)
    r = x[len(x)-y]
    return int(r)

def palcheck(x):
    i=1
    while i < len(str(x)):
        if isolate(x, i) != isolate(x, len(str(x))-i+1):
            return 0
        i = i+1
    return 1

def fac(x):
    a = 2
    while a <= x:
        if  a**2 > x:
            return 0
            break
        elif x%a == 0:
        return x/a
        break
    if a!=2:
        a = a+2
    elif a == 2:
        a = a+1

def GPF(x):
    la = fac(x)
    lb = la
    if la == 0:
        return x
    while la != 0:
        lb = la
        la = fac(la)
    return lb

c = 1
while c <= 1000:
    if palcheck(c) == 1:
        if GPF(c) == c:
            primePalis.append(c)
    c = c+1

print(max(primePalis))
#查找小于1000的最大素数回文
primePalis=[]
def隔离(x,y):
x=str(x)
r=x[len(x)-y]
返回整数(r)
def palcheck(x):
i=1
而我fac()
在控件到达末尾时不显式返回任何内容,因此它返回
None

一个简单的解决方法是在末尾添加
并返回一个

def fac(x):
    a = 2
    #...
    if a!=2:
        a = a+2
    elif a == 2:
        a = a+1
    return a
如果控件到达末尾,函数
fac()
不会显式返回任何内容,因此它返回
None

一个简单的解决方法是在末尾添加
并返回一个

def fac(x):
    a = 2
    #...
    if a!=2:
        a = a+2
    elif a == 2:
        a = a+1
    return a
如果控件到达末尾,函数
fac()
不会显式返回任何内容,因此它返回
None

一个简单的解决方法是在末尾添加
并返回一个

def fac(x):
    a = 2
    #...
    if a!=2:
        a = a+2
    elif a == 2:
        a = a+1
    return a
如果控件到达末尾,函数
fac()
不会显式返回任何内容,因此它返回
None

一个简单的解决方法是在末尾添加
并返回一个

def fac(x):
    a = 2
    #...
    if a!=2:
        a = a+2
    elif a == 2:
        a = a+1
    return a

la=fac(int(la))
错误行似乎没有在您发布的代码中预设,但问题可能是
fac(1)
没有返回任何内容,这意味着它的返回值是
None

在您发布的代码中
la=fac(int(la))
错误行似乎没有预设,但问题可能是,
fac(1)
没有返回任何内容,这意味着它的返回值是
None

在您发布的代码中,
la=fac(int(la))
错误行似乎没有真正预设,但问题可能是
fac(1)
没有返回任何内容,这意味着它的返回值是
None

la=fac(int(la))
错误行在您发布的代码中似乎没有预设,但问题可能是
fac(1)
没有返回任何内容,这意味着它的返回值是
None

对于您的附带问题:您可以按
Ctrl+K
将所有选定的文本缩进为代码。也可以按编辑区域上方的按钮。或者只是在编辑器中缩进代码,如果出于某些原因您无法执行这些操作,请复制,并返回。另外,我的一个旁白是:在发布非平凡代码示例时,您应该添加注释,指示回溯点中的行号,因为Stack Overflow的语法highlighter不会呈现行号。(如果代码被摘录或省略样板文件,则可能会丢失正确的文本。)在执行任何操作之前,请先在第23行中修复缩进,然后
返回x/a
。对于您的附带问题:您可以按
Ctrl+K
将所有选定的文本缩进为代码。也可以按编辑区域上方的按钮。或者只是在编辑器中缩进代码,如果出于某些原因您无法执行这些操作,请复制,并返回。另外,我的一个旁白是:在发布非平凡代码示例时,您应该添加注释,指示回溯点中的行号,因为Stack Overflow的语法highlighter不会呈现行号。(如果代码被摘录或省略样板文件,则可能会丢失正确的文本。)在执行任何操作之前,请先在第23行中修复缩进,然后
返回x/a
。对于您的附带问题:您可以按
Ctrl+K
将所有选定的文本缩进为代码。也可以按编辑区域上方的按钮。或者只是在编辑器中缩进代码,如果出于某些原因您无法执行这些操作,请复制,并返回。另外,我的一个旁白是:在发布非平凡代码示例时,您应该添加注释,指示回溯点中的行号,因为Stack Overflow的语法highlighter不会呈现行号。(如果代码被摘录或省略样板文件,则可能会丢失正确的文本。)在执行任何操作之前,请先在第23行中修复缩进,然后
返回x/a
。对于您的附带问题:您可以按
Ctrl+K
将所有选定的文本缩进为代码。也可以按编辑区域上方的按钮。或者只是在编辑器中缩进代码,如果出于某些原因您无法执行这些操作,请复制,并返回。另外,我的一个旁白是:在发布非平凡代码示例时,您应该添加注释,指示回溯点中的行号,因为Stack Overflow的语法highlighter不会呈现行号。(如果代码被摘录或省略样板文件,则正确的代码可能会丢失。)在做任何事情之前,先在第23行中修复缩进,
返回x/a