在python中没有乘法运算符的情况下相乘

时间:2014-10-11 21:47:54

标签: python operators multiplying

如何在不使用乘法运算符的情况下编写与x * y相乘的python脚本?我知道基本上你应该有:

def multi():
    x = raw_input('x is: ')
    y = raw_input('y is: ')
    z = #(x + x) y times
    return z

multi()

4 个答案:

答案 0 :(得分:1)

x.__mul__(y)
operator.mul(x, y)

答案 1 :(得分:1)

您可以使用{* 3}}按照您描述的方式执行x * y:

x = raw_input('x is: ')
y = raw_input('y is: ')
reduce(lambda a, b: a+b, [x]*y)

这将计算((x + x)+ x)... y次。

编辑以解释减少的内容:

第一个参数是一个正好采用2个参数的函数,描述每次迭代时要做什么。

lambda x,y: x+y只是一个带有2个参数并将它们加在一起的函数。好像你写道:

def my_operation(x, y):
    return x + y

第二个参数是输入数据,例如[1, 4, 2, 8, 9]

reduce将迭代输入数据,从1和4开始。这将传递给您的函数,该函数将返回5.然后将5和2传递给您的函数,... 因此计算结果为((((1+4)+2)+8)+9)

因此,如果您的输入列表是长度为y的[x,x,x ...,x](即[x]*y),您将获得所需的结果,并按照您描述的方式计算。

答案 2 :(得分:0)

使用sum和范围或xrange

z = sum(x for _ in xrange(y))

它当然可以反过来工作,并按照您的要求有效地执行x+x y次。

这与下面的工作基本相同:

z = 0
for _ in range(y):
    z += x

答案 3 :(得分:0)

对于 Python 3.x,您可以使用此代码解决相同的问题。 知道 5*5 是 == 5+5+5+5+5....记住这个想法...

a = int(input("Intro a number: "))
b = int(input("Intro a second number: "))
for i in range(1,a):
    b = b+a
print(b)