jcpython2 发表于 2022-7-1 10:42:09

请问这代码错在哪里???

all = input('输入数组,无需分隔符和空格')
all = list(all)

def myfs(*all,j=3):
    i = 0
    for each in all:
      i += each
      print(i)
    if int(all) == 5:
      i *= 5
      print(all)
    else:
      i *= j
      
myfs()


课后作业的题目
0. 编写一个符合以下要求的函数:
   
计算打印所有参数的和乘以基数(base=3)的结果(比如 mFun(1, 2, 3, 4, 5) 的结果为 45)
如果参数中最后一个参数为(base=5),则设定基数为 5,基数不参与计算(比如 mFun(1, 2, 3, 4, 5, base=5) 的结果为 75)。

https://fishc.com.cn/forum.php?mod=viewthread&tid=42532&extra=page%3D1%26filter%3Dtypeid%26typeid%3D398

我暂时没看答案,但感觉自己写的流程没错,不知道错在哪里

jackz007 发表于 2022-7-1 11:11:58

本帖最后由 jackz007 于 2022-7-1 12:43 编辑

      最大的问题就是没有把概念整明白!
def myfs(* par , base = 3):                # 命名可选参数 base 的默认值为 3,就是说,如果调用函数的时候不特别指定,base 的值就是 3
    return sum(par) * base

print(myfs(1 , 2 , 3 , 4 , 5))             # 唯一区别是:base = 3 ,myfs() 的命名可选参数必须以 base = 为前导的形式给出
print(myfs(1 , 2 , 3 , 4 , 5 , base = 5))# 唯一区别是:base = 5 ,myfs() 的命名可选参数必须以 base = 为前导的形式给出
all = input('输入数组,无需分隔符和空格: ')
all = 'myfs(' + all . strip() + ')'
print(eval(all))                           # 以键盘输入为参数,命名可选参数 base = 3(缺省值) 调用函数 myfs()
all = 'myfs(' + all . strip() + ' , base = 5)'
print(eval(all))                           # 以键盘输入为参数,命名可选参数 base = 5 调用函数 myfs()
      运行实况:
D:\\\test>python x.py
45
75
输入数组,无需分隔符和空格: 1,2,3,4,5,6,7,8
108
540

D:\\\test>

jcpython2 发表于 2022-7-2 11:02:04

jackz007 发表于 2022-7-1 11:11
最大的问题就是没有把概念整明白!

      运行实况:

老哥,你这个答案我是看了好久,做了相关搜索,你说我概念没整明白,不知道是说题目内容还是python概念的,我看了你的答案和小甲鱼的答案,我感觉我自己想多了,还有忘记了sum的用法用了蠢方法for实现,我打算先搁置这个问题,过段时间再来看

但有个问题我额外问问的

all = 'myfs(' + all . strip() + ')'
我第一次知道还有这种灵活的用法,那么这里为啥要加strip()默认去掉空格??不加直接报错

jcpython2 发表于 2022-7-2 11:06:37

jackz007 发表于 2022-7-1 11:11
最大的问题就是没有把概念整明白!

      运行实况:

或者回到我的代码,如果优化下我的代码 比如用sum代替for,并且用户输入不需要带 , 他输入什么我都判断最后一位是不是5

那该如何办?
页: [1]
查看完整版本: 请问这代码错在哪里???