如何在另一个函数中使用一个函数并在Python中对其进行操作?

时间:2019-06-09 02:31:15

标签: python

我想知道如何使用已经在另一个函数中定义的函数?例如,我有一个函数f(n)。然后,我想创建一个函数g(n),使其返回f(n)*2

我正在尝试学习Python,并且我已经知道如何使用一些基本功能,然后我尝试编写一个程序来计算两个数字的最大公约数。我创建了那个功能。我将其称为gcd(a,b),它返回ab的GCD。效果很好!

然后我想重用此函数来计算ab的最小公倍数。

我使用了以下代码:

def lcm(a,b):
    u=gcd(a,b)
    v=a*b/u
    print(v)

利用这样的事实,我期望使用此代码,lcm(a,b)*gcd(a,b)=a*b的输出为ab的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'

这是什么意思以及如何解决?

3 个答案:

答案 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))