鱼C论坛

 找回密码
 立即注册
查看: 1441|回复: 3

[已解决]请问这代码错在哪里???

[复制链接]
发表于 2022-7-1 10:42:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  3. def myfs(*all,j=3):
  4.     i = 0
  5.     for each in all:
  6.         i += each
  7.         print(i)
  8.     if int(all[len(all) - 1]) == 5:
  9.         i *= 5
  10.         print(all[len(all) - 1])
  11.     else:
  12.         i *= j
  13.         
  14. 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?m ... peid%26typeid%3D398

我暂时没看答案,但感觉自己写的流程没错,不知道错在哪里
最佳答案
2022-7-1 11:11:58
本帖最后由 jackz007 于 2022-7-1 12:43 编辑

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

  3. print(myfs(1 , 2 , 3 , 4 , 5))             # 唯一区别是:base = 3 ,myfs() 的命名可选参数必须以 base = 为前导的形式给出
  4. print(myfs(1 , 2 , 3 , 4 , 5 , base = 5))  # 唯一区别是:base = 5 ,myfs() 的命名可选参数必须以 base = 为前导的形式给出
  5. all = input('输入数组,无需分隔符和空格: ')
  6. all = 'myfs(' + all . strip() + ')'
  7. print(eval(all))                           # 以键盘输入为参数,命名可选参数 base = 3(缺省值) 调用函数 myfs()
  8. all = 'myfs(' + all . strip() + ' , base = 5)'
  9. print(eval(all))                           # 以键盘输入为参数,命名可选参数 base = 5 调用函数 myfs()
复制代码

        运行实况:
  1. D:\[00.Exercise]\[Python]\test>python x.py
  2. 45
  3. 75
  4. 输入数组,无需分隔符和空格: 1,2,3,4,5,6,7,8
  5. 108
  6. 540

  7. D:\[00.Exercise]\[Python]\test>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-1 11:11:58 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-7-1 12:43 编辑

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

  3. print(myfs(1 , 2 , 3 , 4 , 5))             # 唯一区别是:base = 3 ,myfs() 的命名可选参数必须以 base = 为前导的形式给出
  4. print(myfs(1 , 2 , 3 , 4 , 5 , base = 5))  # 唯一区别是:base = 5 ,myfs() 的命名可选参数必须以 base = 为前导的形式给出
  5. all = input('输入数组,无需分隔符和空格: ')
  6. all = 'myfs(' + all . strip() + ')'
  7. print(eval(all))                           # 以键盘输入为参数,命名可选参数 base = 3(缺省值) 调用函数 myfs()
  8. all = 'myfs(' + all . strip() + ' , base = 5)'
  9. print(eval(all))                           # 以键盘输入为参数,命名可选参数 base = 5 调用函数 myfs()
复制代码

        运行实况:
  1. D:\[00.Exercise]\[Python]\test>python x.py
  2. 45
  3. 75
  4. 输入数组,无需分隔符和空格: 1,2,3,4,5,6,7,8
  5. 108
  6. 540

  7. D:\[00.Exercise]\[Python]\test>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-2 11:02:04 | 显示全部楼层
jackz007 发表于 2022-7-1 11:11
最大的问题就是没有把概念整明白!

        运行实况:

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

但有个问题我额外问问的

all = 'myfs(' + all . strip() + ')'
我第一次知道还有这种灵活的用法,那么这里为啥要加strip()默认去掉空格??  不加直接报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-2 11:06:37 | 显示全部楼层
jackz007 发表于 2022-7-1 11:11
最大的问题就是没有把概念整明白!

        运行实况:

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

那该如何办?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表