a2421480 发表于 2018-11-30 21:56:02

看代码

编写一个符合以下要求的函数:
    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   输出结果是75,怎么形成的呢

爱学习的懒懒君 发表于 2018-11-30 22:02:58

形参前面加*是一个收集参数,第一个参数是收集参数时,在不指定其他具体形参的情况下,传递的实参全部被收集参数接收,也就是param是,而指定具体参数名接受参数就是给具体的参数复制,例子中将base赋值为5,所有先算1加到5,然后这个结果乘5,就是75

塔利班 发表于 2018-11-30 22:06:47

*param收集参数param就是元组(1,2,3,4,5)
result = 0
    for each in param:
      result += each
使result是元组param的和,即收集参数各项的和
最后是简单的将自身乘以base(你设定的倍率)

a2421480 发表于 2018-12-1 10:04:40

塔利班 发表于 2018-11-30 22:06
*param收集参数param就是元组(1,2,3,4,5)
result = 0
    for each in param:


result 第一次是0+1 第二次不应该是1+2以此类推最后result的结果不就是 1+1+2+1+2+3+1+2+3+4+1+2+3+4+5 吗?

a2421480 发表于 2018-12-1 10:05:36

爱学习的懒懒君 发表于 2018-11-30 22:02
形参前面加*是一个收集参数,第一个参数是收集参数时,在不指定其他具体形参的情况下,传递的实参全部被收 ...

result 第一次是0+1 第二次不应该是1+2以此类推最后result的结果不就是 1+1+2+1+2+3+1+2+3+4+1+2+3+4+5 吗?

塔利班 发表于 2018-12-1 10:06:58

a2421480 发表于 2018-12-1 10:05
result 第一次是0+1 第二次不应该是1+2以此类推最后result的结果不就是 1+1+2+1+2+3+1+2+3+4+1+2+3+4 ...

1
1+2
1+2+3
1+2+3+4
1+2+3+4+5

a2421480 发表于 2018-12-1 10:09:50

塔利班 发表于 2018-12-1 10:06
1
1+2
1+2+3


为啥 不是 全部的和呢

a2421480 发表于 2018-12-1 10:12:09

a2421480 发表于 2018-12-1 10:09
为啥 不是 全部的和呢

for 下面不是接循环体吗
页: [1]
查看完整版本: 看代码