Discuss / Python / 各位,我这么写犯了什么错误呢

各位,我这么写犯了什么错误呢

Topic source

def product(x,args): sum = 1 for arg in args: sum = sumarg*x return sum 请问为什么不能这么写呢.我有点不太懂.

product(5) = 1 product(5, 6) = 30 product(5, 6, 7) = 1050 product(5, 6, 7, 9) = 47250 测试失败!

错在x被乘了多次, 但是product(5)怎么就是1呢..

product(5)时,args为空,不执行for..in..,直接输出了sum=1

当你只传一个参数的时候, 你的代码只会执行sum=1, 然后直接return了

wenyizhen

#5 Created at ... [Delete] [Delete and Lock User]

def product(*args): if len(args) ==0: raise TypeError('bad type') m = 1; for n in args: m = n*m; return m;

感觉应该是这个样子的,你错的地方有两个: 1,传参个数不对,测试用例穿的是可变参数。 2,测试用例有product() 测试结果应该是抛出传参错误 raise TypeError('Error')

wenyizhen

#6 Created at ... [Delete] [Delete and Lock User]

我也理解错了你这样也是可以的

def product(x,*args): m = x; for n in args: m = m*n return m


  • 1

Reply