隋戈子 发表于 2020-2-17 22:20:50

Python课后习题

本帖最后由 隋戈子 于 2020-2-17 23: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)

我的疑惑:
mFun(*param, base=3)中的base=3是形参吗?

我的答案:
def sum(member):
    result = 0
    for each in member:
      result += each
      return
      

def sum1(member):
    if member[-1] != 5:
          base = 3
          result *= base
          print(result)
      
    else:
      base = 5
      result = result - 5
      result *= base
      print(result)


运行一下
https://i.loli.net/2020/02/17/auqtLmPnBMpiAsY.png

为什么会这样呢?
百思不得解

ba21 发表于 2020-2-18 00:11:15

首先解答你
mFun(*param, base=3) 是形参,*param可变参数(意思就是可传多个参数);base 是固定参数,且已初始化值3

再说你的代码
跟题目沾不上半点边,说得很清楚了,所有参数,你一个列表算所有参数吗?(当然在编程的时候想不到别的办法,用列表当多参数也是个办法)
别怪我说得难听,你的代码就是拖屎

huminxuan 发表于 2020-2-18 08:33:41

看不懂你的,member【-1】什么意思?

zltzlt 发表于 2020-2-18 11:06:31

你理解错题目了

而且你 sum1 并没有调用,sum1() 才是调用函数

隋戈子 发表于 2020-2-18 17:25:19

zltzlt 发表于 2020-2-18 11:06
你理解错题目了

而且你 sum1 并没有调用,sum1() 才是调用函数

好吧
页: [1]
查看完整版本: Python课后习题