A.Lyapunov 发表于 2020-7-7 11:46:16

编写一个符合以下要求的函数

1)、计算打印所有参数的和乘以基数(base=3)的结果
2)、如果参数中的最后一个参数为(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)

qiuyouzhi 发表于 2020-7-7 11:50:08

怎么没有满足呢?

A.Lyapunov 发表于 2020-7-7 12:01:27

qiuyouzhi 发表于 2020-7-7 11:50
怎么没有满足呢?

运行程序结果是75,(1+2+3+4+5)乘以5=75,基数参与了求和运算

qiuyouzhi 发表于 2020-7-7 12:04:30

A.Lyapunov 发表于 2020-7-7 12:01
运行程序结果是75,(1+2+3+4+5)乘以5=75,基数参与了求和运算

可那个5是传入的参数,必须要参与求和
基数参与了求和运算是1 + 2 + 3 + 4 + 5 + 5

陈尚涵 发表于 2020-7-7 12:07:26

对啊

陈尚涵 发表于 2020-7-7 12:07:57

@qiuyouzhi 好友我说你干嘛呢,原来在这里气死我了!

Twilight6 发表于 2020-7-7 12:10:38

A.Lyapunov 发表于 2020-7-7 12:01
运行程序结果是75,(1+2+3+4+5)乘以5=75,基数参与了求和运算


你是想达到这种效果?

def mFun(*param, base=3):
    result = 0
    param = list(param)    # 转为列表,因为元组不可删减元素
    if base == 5:         #判断最后一个参数是否为 5
      for i in param[:]:
            if i == 5:         # 若是则移除掉 5 不参与求和运算
                param.remove(i)
    for each in param:
      result += each

    result *= base

    print('结果是:', result)

mFun(1, 2, 3, 4, 5, base=5)

陈尚涵 发表于 2020-7-7 12:12:28

7楼那个有问题

A.Lyapunov 发表于 2020-7-7 12:13:20

qiuyouzhi 发表于 2020-7-7 12:04
可那个5是传入的参数,必须要参与求和
基数参与了求和运算是1 + 2 + 3 + 4 + 5 + 5

如果是这样,那就是我误解了题目的意思...谢谢你

A.Lyapunov 发表于 2020-7-7 12:18:07

Twilight6 发表于 2020-7-7 12:10
你是想达到这种效果?

如果参数5不是最后一个参数,也会移除把

qiuyouzhi 发表于 2020-7-7 12:21:24

A.Lyapunov 发表于 2020-7-7 12:18
如果参数5不是最后一个参数,也会移除把

是的
P.S: 如果问题解决了,请设置【最佳答案】

A.Lyapunov 发表于 2020-7-7 12:22:18

def Mfun(*param,base = 3):
    result = 0
    param = list(param)
    if param[-1] == 5:
      param.pop()
    for each in param:
      result += each
    result *=base
    print('结果是:',result)
Mfun(1,2,3,4,5,base = 5)

Twilight6 发表于 2020-7-7 12:22:45

A.Lyapunov 发表于 2020-7-7 12:18
如果参数5不是最后一个参数,也会移除把

不会if 第一个判断 就是 是否为 5 啊

Twilight6 发表于 2020-7-7 12:24:39

A.Lyapunov 发表于 2020-7-7 12:22


这里的最后一个参数是值 base不是指 param

qiuyouzhi 发表于 2020-7-7 12:25:21

陈尚涵 发表于 2020-7-7 12:07
@qiuyouzhi 好友我说你干嘛呢,原来在这里气死我了!

.......

A.Lyapunov 发表于 2020-7-7 12:29:02

Twilight6 发表于 2020-7-7 12:22
不会if 第一个判断 就是 是否为 5 啊

会移除,我刚刚试了一下

A.Lyapunov 发表于 2020-7-7 12:29:43

Twilight6 发表于 2020-7-7 12:24
这里的最后一个参数是值 base不是指 param

谢谢你,刚刚那位老兄解答了,是我理解错了题目

Twilight6 发表于 2020-7-7 12:30:51

A.Lyapunov 发表于 2020-7-7 12:29
会移除,我刚刚试了一下



移除了所有的5,当最后一个参数 base 等于 5 的时候 , 是你没理解我代码的意思哈~

你是拿课后答案来反推题目了,题目的意思是告诉你 base 不参与 求和,而不是当 base = 5 时候最后参数 base 不参与求和

A.Lyapunov 发表于 2020-7-7 12:43:06

Twilight6 发表于 2020-7-7 12:30
移除了所有的5,当最后一个参数 base 等于 5 的时候 , 是你没理解我代码的意思哈~

你是拿课后 ...

好像是的,我的思路没有跟着题目的要求走,也没有理解你代码的意思。谢谢!
页: [1]
查看完整版本: 编写一个符合以下要求的函数