鱼C论坛

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

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

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

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

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

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

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

我暂时没看答案,但感觉自己写的流程没错,不知道错在哪里
最佳答案
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:\[00.Exercise]\[Python]\test>python x.py
45
75
输入数组,无需分隔符和空格: 1,2,3,4,5,6,7,8
108
540

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

使用道具 举报

发表于 2022-7-1 11:11:58 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 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:\[00.Exercise]\[Python]\test>python x.py
45
75
输入数组,无需分隔符和空格: 1,2,3,4,5,6,7,8
108
540

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-9-28 08:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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