Python 函数给我错误;认为输入是非类型的
我正试图编写一段代码来确定小于1000的最大素数回文,但收到一条错误消息,我真的不知道如何修复:错误消息如下: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
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
。