我这串代码为啥会报错呢?

问题遇到的现象和发生背景

1-1/2+2/3-3/5+4/8-5/13+...的前n项和,n由用户输入(n>0),结果用str.format()方法保留小数点后6位数字输出。

问题相关代码,请勿粘贴截图

def fenmu(n):
if n==1:
print(1)
elif n==2:
print(2)
else:
print(fenmu(n-1)+fenmu(n-2))

def fenzi(n):
if n==1:
print(1)
else:print(n-1)

a=eval(input())
sign=1
b=0
for i in range(1,a+1):
b=b+fenzi(i)/fenmu(i)sign
sign=sign
(-1)
print(b)

运行结果及报错内容

unsupported operand type(s) for /: 'NoneType' and 'NoneType'

我的解答思路和尝试过的方法

我不知道怎么解决

我想要达到的结果

修改一下,让他不报错且能运行

def fenmu(n): 
    if n==1:
        return 1
    elif n==2:
        return 2
    else:
        return fenmu(n-1)+fenmu(n-2)

def fenzi(n):
    if n==1:
        return 1
    else:
        return n-1

a=eval(input())
a = int(a)
sign=1
b=0
for i in range(1,a+1):
    b=b+fenzi(i)/fenmu(i)*sign
    sign=sign*(-1)

print("%.6f"%b)

img

你这fenzi(i)/fenmu(i),两个函数都没有返回值,弄个个空/空,没懂你想实现啥功能

把print换成return就好了

要有返回值才行哦 return结果
接收结果