请问这代码错在哪里???
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 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> jackz007 发表于 2022-7-1 11:11
最大的问题就是没有把概念整明白!
运行实况:
老哥,你这个答案我是看了好久,做了相关搜索,你说我概念没整明白,不知道是说题目内容还是python概念的,我看了你的答案和小甲鱼的答案,我感觉我自己想多了,还有忘记了sum的用法用了蠢方法for实现,我打算先搁置这个问题,过段时间再来看
但有个问题我额外问问的
all = 'myfs(' + all . strip() + ')'
我第一次知道还有这种灵活的用法,那么这里为啥要加strip()默认去掉空格??不加直接报错 jackz007 发表于 2022-7-1 11:11
最大的问题就是没有把概念整明白!
运行实况:
或者回到我的代码,如果优化下我的代码 比如用sum代替for,并且用户输入不需要带 , 他输入什么我都判断最后一位是不是5
那该如何办?
页:
[1]