质因子
def f(n):for i in range (2,n+1):
if n%i==0:
return i
x=""
n=int(input("请输入数:"))
while f(n)!=n:
x=x+str(f(n))+"*"
n%=f(n)
print(x+str(n))
请问为什么会报错··
而且我在while循环第一行输入过print(type(f(n))),运行的时候第一次循环是int,第二次是Nonetype,然后就是第二次循环的Nonetype无法与n相除导致的报错,不明白 本帖最后由 heidern0612 于 2019-1-5 07:36 编辑
,逗号, 发表于 2019-1-4 22:29
而且我在while循环第一行输入过print(type(f(n))),运行的时候第一次循环是int,第二次是Nonetype,然后就是 ...
想法很好,return的含义是结束函数调用,返回一个值。
也就是说,return会直接让函数返回,函数就运行结束了,所有该函数的代码都不再执行了,所以再次调用会返回一个空值。
你的while循环里面加个break,保证只调用一次就可以了。
def f(n):
for i in range (2,n+1):
if n%i==0:
return i
n=int(input("请输入数:"))
x=""
while f(n)!=n:
x=x+str(f(n))+"*"
n%=f(n)
break
print(x+str(n)) heidern0612 发表于 2019-1-5 07:27
想法很好,return的含义是结束函数调用,返回一个值。
也就是说,return会直接让函数返回,函数就运 ...
好像不是这个的问题,是因为我那个除号用的取余的,然后第二遍循环的时候除数为0,就变成了Nonetype,我把%换成//就可以正确运行了,我这个做法是要求出一个数的质因子连乘,调用一次虽然不会报错但是达不成题目要求,是我没说清不好意思,不过还是感谢。
页:
[1]