shuimu39 发表于 2020-10-22 22:52:37

python作业题

def myfun(*parameter,base=3):
    sum = 0
    parameter = list(parameter)
    if parameter.pop == 5:
      base = 5
    for each in parameter:
      if each != base:
            sum = sum + each * base
    print(sum)

-----------------------------------
>>> myfun(1,2,3,4,5,6,7,8,9,5)
141
0. 编写一个符合以下要求的函数:
   
    a) 计算打印所有参数的和乘以基数(base=3)的结果
    b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。
代码不知道哪里错了
141也不知道如何计算出来的

2269099035 发表于 2020-10-22 23:09:21

141是因为基数还是3,3不参与计算。然后1+2+...+7+8+9+2=47,47*3=141。最后的2是因为我用5=3+2,顶替前面的3。基数没改变,是因为parameter.pop()这样才对,

昨非 发表于 2020-10-22 23:09:24

本帖最后由 昨非 于 2020-10-22 23:10 编辑

因为你   if parameter.pop == 5:
这句代码里pop返回的是一个对象
<built-in method pop of list object at 0x000001A990608F00>
所以,判断失败,base依旧等于3
最后141=所有参数的和乘以3

def myfun(*parameter,base=3):
    sum = 0
    parameter = list(parameter)
    if parameter.pop() == 5:#加个括号就好了
      base = 5

    for each in parameter:
      if each != base:
            sum = sum + each * base
    print(sum)
   
myfun(1,2,3,4,5,6,7,8,9,5)

修改后,结果200=(1+2+3+4+6+7+8+9)*5

昨非 发表于 2020-10-22 23:10:11

满意的话记得设为最佳答案
页: [1]
查看完整版本: python作业题