苏执 发表于 2020-6-30 17:04:28

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,感觉和问题不符合

qiuyouzhi 发表于 2020-6-30 17:11:06

>>> (1 + 2 + 3 + 4 + 5) * 5
75

叶小贤 发表于 2020-6-30 17:11:15

base=5 的时候 不参与求和计算就是1+2+3+4+5 然后不 乘以5是吧?
我看你代码里也没这个判断 那肯定会*5啊

liuzhengyuan 发表于 2020-6-30 17:13:26

这个原函数做的应该有错……

Twilight6 发表于 2020-6-30 17:14:01

本帖最后由 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)

4444567 发表于 2020-6-30 18:31:27

个人觉得应该是“形参”和“实参”的差别吧。def mFun(*param, base=3)这里面的base=3是形参,没有定义时是默认的,但是可以自己设定。
页: [1]
查看完整版本: python作业第十八讲疑问