鱼C论坛

 找回密码
 立即注册
查看: 1923|回复: 7

0基础入门Python的课后作业-第18讲-动动手第0题

[复制链接]
发表于 2020-2-21 13:40:28 | 显示全部楼层 |阅读模式

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

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

x
0. 编写一个符合以下要求的函数:
    a) 计算打印所有参数的和乘以基数(base=3)的结果
    b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。

小甲鱼给的答案是这样:
def mFun(*param, base=3):
    result = 0
    for each in param:
        result += each

    result *= base
   
    print('结果是:', result)

mFun(1, 2, 3, 4, 5, base=5)

我的问题:
要求“b)如果参数中最后一个参数为(base=5),则设定基数为5”,,这里应该要判断一次 最后一个参数 是否==5才对吧。这样baes=3是一个默认参数,调用的时候可以不带baes
def mFun(*param, base=3):
    result = 0
    for each in param:
        result += each
    if each == 5:
        base = 5
    result *= base

    print('结果是:', result)

mFun(1, 2, 3, 4, 5)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 13:43:46 | 显示全部楼层
不用判断,直接这样写就行了啊
mFun(1, 2, 3, 4, 5, base = 5)
本来参数就是可变的,定义时赋值只是一个默认参数,随时都可以改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 13:43:49 | 显示全部楼层
本帖最后由 zltzlt 于 2020-2-21 13:44 编辑

base=3 是用关键字参数的形式指定的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-21 13:48:19 | 显示全部楼层
qiuyouzhi 发表于 2020-2-21 13:43
不用判断,直接这样写就行了啊

本来参数就是可变的,定义时赋值只是一个默认参数,随时都可以改

“如果参数中最后一个参数为(base=5),则设定基数为5"

我在纠结这句话,是用程序判断 base ==5,自动改基数的问题, 还是要人手动去设定基数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 13:53:22 | 显示全部楼层
这是读题问题,题目的要求时传入参数如果在最后设定了base参数则改变基数base的值,而不是说把最后一个数作为基数,题目打括号就是为了让你单独理解这个最后一个参数就是"base=5"这个整体。举个例子:
如果传入了是mfun(1,2,3,4,5,6)那么结果就是(1+……+6)*3
如果是mfun(1,2,3,4,5,6,base=5)结果就是前面之和乘5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 13:53:35 | 显示全部楼层
supersuNB 发表于 2020-2-21 13:48
“如果参数中最后一个参数为(base=5),则设定基数为5"

我在纠结这句话,是用程序判断 base ==5,自 ...


你设置 base 为几,base 就是几
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 14:51:51 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-2-21 15:02 编辑
supersuNB 发表于 2020-2-21 13:48
“如果参数中最后一个参数为(base=5),则设定基数为5"

我在纠结这句话,是用程序判断 base ==5,自 ...


不不不,程序会自己设定的
看代码:
def print2(base = 3):
    print(base)
然后你这样调用:
print2(base = 5)
看结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-7 20:56:07 | 显示全部楼层
参考答案实际上是在输入参数时人为进行判断,那部分放进param里,哪个放在base里,你要想偷懒可以内置if语句,免去base参数,让系统判断base:
def b(*x):
    base=3
    a=0
    if x[len(x)-1]!=5:
        for i in x:
            a+=i        
    else:
        x=x[:len(x)-1]
        base=5
        for i in x:
            a+=i
    return a*base
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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