Как умножить неизвестные числа аргументов друг на друга в функции в Python - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь создать функцию multiply(#numbers), которая умножает все в скобках и возвращает число. Как мне умножить числа в скобках, когда я не знаю, сколько их будет?

Вот код, который я получил до сих пор:

def multiply(*args):
    return *args * *args

Ответы [ 6 ]

2 голосов
/ 06 октября 2019
def multiply(*args):
    product = 1
    for a in args:
        product *= a

    return product

В основном args обрабатывается как список. Перейдите через это и умножьте. Вы можете быть осторожны, если ожидаете, что передадите его без параметров. Это вывело бы 1, если бы вы только что позвонили multiply(), но я не уверен, что вы в этом случае следуете за ним.

1 голос
/ 06 октября 2019

Первый метод:

def multiply1(*args):    
    # Multiply elements one by one 
    result = 1
    for x in args: 
         result = result * x  
    return result  
print(multiply1(1,2,4))

Второй метод:

import numpy    
# using numpy.prod() to get the multiplications  
def multiply2(*args):      
    return numpy.prod(args)  
print(multiply2(1,2,4))

Третий метод:

from functools import reduce
# Python3 program to multiply all values in the 
# list using lambda function and reduce()  
def multiply3(*args):      
    return reduce((lambda x, y: x * y), args)  
print(multiply3(1,2,4))
1 голос
/ 06 октября 2019

Упрощенные ответы, которые уже даны, вполне могут удовлетворить ваши потребности, но команда reduce очень эффективна для последовательного применения скользящего вычисления к парам чисел в списке.

from functools import reduce
def multiply(*args):
    return reduce((lambda x, y: x * y), args)

В основном, если вы выполняете

multiply(1,2,3,4)

reduce вычисляет x * y, где x и y равны 1 и 2 соответственно, затем использует результат как x, а y как 3 и продолжает список чисел, умножая следующий. с результатом всех предыдущих расчетов.

1 голос
/ 06 октября 2019

args - это кортеж, поэтому вы можете использовать саму переменную. Например:

>>> def func(*args):
...     print len(args)
...
>>> func(5, 6, 7)
3

Чтобы умножить все, как вы хотите:

>>> def multiply(*args):
...     return reduce(lambda x, y: x*y, args)
...
>>> multiply(1, 2, 3, 4)
24
1 голос
/ 06 октября 2019

Вы находитесь в правильном месте. *args - так вы заботитесь о неизвестном количестве аргументов. В вашей функции args вернет список, содержащий все аргументы.

def mult(*args):
    result = 1
    for num in args:
        result *= num
    print(result)
1 голос
/ 06 октября 2019

просто зациклите аргументы и умножьте каждый элемент с сохраненным результатом в переменную результатов

def multiply(*args):
    results=1
    for a in args:
        results=results*a
    return results

Кроме того, вы можете сделать это с суммой, просто установив начальное значение результатов в 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...