我想知道如何使用已经在另一个函数中定义的函数?例如,我有一个函数f(n)
。然后,我想创建一个函数g(n)
,使其返回f(n)*2
。
我正在尝试学习Python,并且我已经知道如何使用一些基本功能,然后我尝试编写一个程序来计算两个数字的最大公约数。我创建了那个功能。我将其称为gcd(a,b)
,它返回a
和b
的GCD。效果很好!
然后我想重用此函数来计算a
和b
的最小公倍数。
我使用了以下代码:
def lcm(a,b):
u=gcd(a,b)
v=a*b/u
print(v)
利用这样的事实,我期望使用此代码,lcm(a,b)*gcd(a,b)=a*b
的输出为a
和b
的LCM。但是,当我运行代码并使用定义的函数时,我得到了:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
lcm(2,2)
File "C:/Users/(my user name)/AppData/Local/Programs/Python/Python37/euclides.py", line 55, in lcm
v=a*b/u
TypeError: unsupported operand type(s) for /: 'int' and 'NoneType'
这是什么意思以及如何解决?
答案 0 :(得分:1)
将其更改为返回结果,而不仅仅是打印结果:
def lcm(a,b):
u=gcd(a,b)
v=a*b/u
return v
没有return
,它将打印结果,然后隐式返回None
。
您需要对gcd
函数进行相同的更改,以使调用按预期进行(看起来像gcd
函数正在返回None
)。另外请注意,在Python 3中,gcd
可以作为math.gcd
使用。
答案 1 :(得分:0)
如TypeError所建议,该错误来自v=a*b/u
行,其中u
被假定为gcd()
的返回值。
函数gcd()
似乎没有返回任何值。您需要从未包含的return
函数中添加gcd()
。作为伪代码,执行类似
def gcd(a, b):
# var = Do some stuff
return var
def lcm(a,b):
u=gcd(a,b)
v=a*b/u
return v
a = # some value
b = # some value
print (lcm(a, b))
答案 2 :(得分:0)
您还可以使用其他结构:
class GCD_model:
def gcd(a, b):
# var = Do some stuff
return var
def lcm(a,b, model):
u=model.gcd(a,b)
v=a*b/u
return v
a = # some value
b = # some value
model = GCD_model()
print (lcm(a, b, model))