计算产品Python通用公式

时间:2015-09-29 03:47:50

标签: python

试图让它发布以下3行作为结果。没什么,没什么。

  1. 数字110的乘积为:3628800

  2. 可被3整除的第一个3个数字的乘积为:162

  3. 数字0-100的乘积为:0

  4. Start是序列开始的地方,number是结束的地方,space是数字之间的空格(1是每个数字,2只是偶数,等等。)

    我是初学者,需要一些帮助

    这就是我的目标,但我不确定将findproduct定义为什么。我正在考虑制作一个循环并将n =设置为n+1,但我仍然不知道从哪里开始:

    def findproduct(start, number, space):
        # code here
        pass
    
    product1 = findproduct(1, 10, 1)
    print("The product of the numbers 1 through 10 is:", product1)
    
    product2 = findproduct (2.0, 5, 2)
    print("The product of the first 5 even numbers is:", product2)
    
    product3 = findproduct (3, 3, 3)
    print("The product of the first 3 numbers divisible by 3 is:", product3)
    
    product4 = findproduct (0.0, 100, -1)
    print("The product of the numbers -1 through -100 is:", product4)
    

1 个答案:

答案 0 :(得分:0)

range会根据startstopstep为您提供所需的数字。您的stop似乎是包容性的(其中rangestop独有的),因此您需要进行调整,但这并不太难:

def inclusive_range(start, stop, step):
    if step < 0:
        stop -= 1
    else:
        stop += 1
    return range(start, stop, step)

它可以为您提供您想要的产品数字。您可以使用累加器循环以明显的方式执行此操作:

def find_product(start, stop, step):
    prod = 1
    for i in inclusive_range(start, stop, step):
        prod *= i
    return prod

或者使内置插件变得聪明一线(忽略文件顶部的导入):

 from functools import reduce
 from operator import mul

def find_product(start, stop, step):
    return reduce(mul, inclusive_range(start, stop, step), 1)

拼写循环有一些温和的优点;你可以为它prod == 0添加一个测试,并在发生时提前退出循环;如果在输入中的任何地方出现零,那么无论如何你都不会得到一个非零产品。当然,在Python 3中,range是一个更强大的对象,你可以预先检查range中的0并更有效地避免工作:

def find_product(start, stop, step):
    values = inclusive_range(start, stop, step)        
    if 0 in values:
        return 0
    return reduce(mul, values, 1)