首页 > 解决方案 > 将一个数字范围内的所有数字相乘

问题描述

我正在尝试编写一个函数来乘以(比如说 1 和 4)之间的所有数字,结果应该是 1 * 2 * 3 = 6。但是,我在编写这段代码时遇到了一些麻烦。我已经在下面发布了我尝试过的内容。

import numpy as np
def multiply_between(num1, num2):
    result = np.prod(range(num1, num2))
    return result

我想的另一种方式有点像这样,但我似乎无法让它发挥作用。

def multiply_between(num1, num2):

    for num in range(num1, num2):
        return num * num

当我使用 numpy 时,我得到了正确的答案,但我想知道是否有算法方法可以做到这一点。

标签: pythonmultiplication

解决方案


您需要存储正在运行的产品,然后在最后返回它:

def multiply_between(num1, num2):
    result = 1
    for num in range(num1, num2):
        result *= num
    return result

如果您想要单线,请使用functools.reducewith operator.mul

import functools
import operator

def multiply_between(num1, num2):
    return functools.reduce(operator.mul, range(num1, num2))

推荐阅读