Estoy tratando de hacer una función multiply(#numbers) que multiplique todo entre paréntesis y devuelva el número. ¿Cómo multiplico los números entre paréntesis cuando no sé cuántos números habrá?

Aquí está el código que obtuve hasta ahora:

def multiply(*args):
    return *args * *args
0
Not_A_Hacker 6 oct. 2019 a las 11:54

6 respuestas

La mejor respuesta
def multiply(*args):
    product = 1
    for a in args:
        product *= a

    return product

Básicamente trata args como una lista. Recorrerlo y multiplicarlo. Es posible que desee tener cuidado si anticipa no pasarle ningún parámetro. Esto generaría 1 si acaba de llamar multiply(), pero no estoy seguro del comportamiento que busca en ese caso.

2
Keith Mertan 6 oct. 2019 a las 09:04

Las respuestas más simples ya dadas pueden satisfacer sus necesidades, pero el comando reduce es muy poderoso para aplicar un cálculo continuo secuencialmente a pares de números en una lista.

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

Básicamente si realiza

multiply(1,2,3,4)

reduce calcula x * y donde x e y son 1 y 2 respectivamente, luego usa el resultado como x, e y como 3, y continúa a lo largo de la lista de números multiplicando el siguiente con el resultado de todos los cálculos anteriores .

1
David Buck 6 oct. 2019 a las 09:11

Estás en el área correcta. *args es cómo se ocupa de un número desconocido de argumentos. Dentro de su función, args devolverá una lista que contiene todos los argumentos.

def mult(*args):
    result = 1
    for num in args:
        result *= num
    print(result)
1
ba_ul 6 oct. 2019 a las 09:07

Primer método:

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

Segundo método:

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

Tercer método:

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
Abhishek-Saini 6 oct. 2019 a las 09:12

Simplemente recorra los argumentos y multiplique cada elemento con el resultado almacenado en la variable de resultados

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

Además, puede hacerlo con suma simplemente establezca el valor inicial de los resultados en 0

1
Sol 6 oct. 2019 a las 11:01

args es una tupla, por lo que puede usar la variable misma. Por ejemplo:

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

Para multiplicar todo como quieras:

>>> def multiply(*args):
...     return reduce(lambda x, y: x*y, args)
...
>>> multiply(1, 2, 3, 4)
24
1
user3579261 6 oct. 2019 a las 09:11
58255698