从多个列表中计算产品

时间:2018-04-18 01:06:00

标签: python python-3.x

我有一个Python分配,它要求我创建一个返回多个数字列表的函数。然后,编写另一个获取数字列表的函数,并计算列表中所有项目的乘积。必须在函数中使用for循环。

输出应该是:

Enter multiple of: 2
Enter an upper limit: 10
[2, 4, 6, 8, 10] 
product is 3840

但我无法使第二个功能起作用,它打印为0.

#from functools import reduce # Valid in Python 2.6+, required in Python 3
#import operator

a = []
def func_list(multi,upper,a):
    for i in range (upper):
        if i % multi == 0:
            a.append(i) #DOESNT INCLUDE THE UPPER LIMIT

multi = int(input("Enter multiple of: "))
upper = int(input("Enter an upper limit: ")) 

func_list(multi,upper,a)
print(a)

#b 
#input = list of number (param)
#output = calculates the product of all the list (sum)

def prod(a):
    prod1 = 1 
    for i in a:
        prod1 *= i 
    return prod1
    #return reduce(operator.mul, a, 1)
#func_list(multi,upper)

prod(a)
print (prod(a))

我得到的输出是:

Enter multiple of: 2  
Enter an upper limit: 10
[0, 2, 4, 6, 8] I don't know how to inc. the limiter, but it's not my concern yet.
0 not right

我尝试使用此处建议使用reduce,但我不知道我做错了什么,因为它没有用。

2 个答案:

答案 0 :(得分:0)

Python range()已内置此功能:range(start, stop, increment)

简单地:

def func_list(multi,upper,a):
    a = list(range(multi, upper+1, a))

如果您需要使用for循环:

def func_list(multi,upper,inc):
    for i in range(multi, upper+1, inc):
        a.append(i)

您的第二个产品功能确实有效。它打印0的原因是因为这一行:for i in range (upper):。这导致0被附加到您的列表,使产品为0。

答案 1 :(得分:0)

import numpy as np

def multiples_list(numbers, upper):
    '''
    Create a function that returns a list of multiples
    with a upper limit of 10.
    '''
    numbers_list = []

    for number in numbers:
       if number <= upper and number % 2 == 0:
           numbers_list.append(number)


    return numbers_list 


def product_of_multiples(numbers):

    new_numbers = []
    for num in numbers:
        new_numbers.append(num)

    numbers_array = np.array(new_numbers)

    product = np.product(numbers_array)

    return product


#numbers_list = list(int(input('Please enter a series of numbers: ')))

numbers_list = [2, 4, 6, 8, 10]

print(multiples_list(numbers_list, 10))

print(product_of_multiples(numbers_list))

这是输出:

[2, 4, 6, 8, 10]
3840

我在您的产品功能中所做的是从您作为参数传递的列表中创建一个新列表。我们使用for循环追加到新列表。我们可以将新列表传递给np.array(),以便在for循环之后从列表中创建一个数组。我们可以使用np.product()函数并传递列表数组并返回产品的完全格式化版本。