shawncaoo 发表于 2020-5-22 19:53:28

python018课后问题

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)
1)这道题的答案是不是有很大的问题啊,最后一行代码仅起到将基数设定为5,并没有设定不参与求和计算。而且基数还是将原先的base=3覆盖掉,并不会自动根据最后一个参数进行设置(即:当最后一个参数等于5的时候)。
2)正确的代码应该如何根据这个改进呢?

Twilight6 发表于 2020-5-22 19:58:50

题目是什么都不知道,要我们怎么帮你改进?

shawncaoo 发表于 2020-5-22 20:02:07

Twilight6 发表于 2020-5-22 19:58
题目是什么都不知道,要我们怎么帮你改进?

不好意思,题目是:
(a)计算打印所有参数的和乘以基数(base=3)结果
(b)如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算

Twilight6 发表于 2020-5-22 20:04:54

shawncaoo 发表于 2020-5-22 20:02
不好意思,题目是:
(a)计算打印所有参数的和乘以基数(base=3)结果
(b)如果参数中最后一个参数为(bas ...

基数不参与求和计算
题目有写不参与呀

shawncaoo 发表于 2020-5-22 20:23:43

Twilight6 发表于 2020-5-22 20:04
题目有写不参与呀

那mFun(1,2,3,4,5,base=5) 这个式子最后(1+2+3+4+5)*5 而不是乘以3,base=5影响了原来的乘数

Twilight6 发表于 2020-5-22 20:27:00

shawncaoo 发表于 2020-5-22 20:23
那mFun(1,2,3,4,5,base=5) 这个式子最后(1+2+3+4+5)*5 而不是乘以3,base=5影响了原来的乘数

base 重新赋值 = 5 了默认值是 3
就像print 有个默认参数的end = '\n' 换行符号你重新end = ' ' 空格赋值 那么 就失去了原有的换行功能变成 打印一个空格

zwhe 发表于 2020-5-31 10:45:19

{:7_129:}

日他哥 发表于 2020-6-25 21:14:11

我觉得题目有点歧义,我和你的理解一样,如果param=的话,result应该是(1+2+3+4)*3;如果param=的话,5作为基数不参与求和,result应该是(1+2+3+4)*5。
我就改了一下参考答案,就自动判断最后一位参数是不是5,然后代入不同的算法:
def mFun(*param, base=3):
    result = 0
    if param[-1]!=5:      
      for each in param:
            result += each

      result *= base
      
      print('结果是:', result)
    else:
      base=5
      for each in param:
            result += each

      result = (result-5)* base
      
      print('结果是:', result)

mFun(#自行输入参数)
页: [1]
查看完整版本: python018课后问题