python作业第十八讲疑问
0. 编写一个符合以下要求的函数:a) 计算打印所有参数的和乘以基数(base=3)的结果
b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。
def mFun(*param, base=3):
result = 0
for each in param:
result += each
result *= base
print('结果是:', result)
mFun(1, 2, 3, 4, 5, base=5)
不是说最后一个参数为(base=5),基数不参与求和计算。
为什么运行mFun(1, 2, 3, 4, 5, base=5)这个是75,感觉和问题不符合 >>> (1 + 2 + 3 + 4 + 5) * 5
75 base=5 的时候 不参与求和计算就是1+2+3+4+5 然后不 乘以5是吧?
我看你代码里也没这个判断 那肯定会*5啊 这个原函数做的应该有错…… 本帖最后由 Twilight6 于 2020-6-30 17:26 编辑
我觉得是甲鱼哥的代码有些差错,很多人有这样的疑问了
正确代码应该是这样的:
def mFun(*param, base=3):
result = 0
param = list(param)# 因为 param 默认是元组 不能删除元素 而我们后面需要改变所以要转为列表
if base == 5: #判断最后一个参数 基数是否为 5
for i in param[:]:# 若是 则 5 都不参与求和运算
if i == 5:
param.remove(5)# 移除掉 5
for each in param:
result += each
result *= base
print('结果是:', result)
mFun(1, 2, 3, 4, 5, base=5)
个人觉得应该是“形参”和“实参”的差别吧。def mFun(*param, base=3)这里面的base=3是形参,没有定义时是默认的,但是可以自己设定。
页:
[1]