如何在不使用乘法运算符的情况下编写与x * y
相乘的python脚本?我知道基本上你应该有:
def multi():
x = raw_input('x is: ')
y = raw_input('y is: ')
z = #(x + x) y times
return z
multi()
答案 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)
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)